/ / Wiele sprzężeń daje instrukcję sql niepoprawnie zakończoną - sql, oracle, oracle-sqldeveloper

Wielokrotne dołączenia powodują, że wyrażenie sql nie zostało poprawnie zakończone - sql, oracle, oracle-sqldeveloper

oto moje zapytanie:

select p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
from
(person p1 full outer join owns o1 on p1.driver_id = o1.driver_id) and
(Participated part full outer join ol on part.license = o1.license)

Otrzymuję błąd instrukcji SQL zakończony nieprawidłowo. Chcę tylko zbudować tabelę w ramach mojego procesu rozwiązywania bardziej skomplikowanego problemu.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie tak definiujesz relacje w FROM część. Spróbuj wykonać następujące czynności:

select p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
from
person p1
full outer join owns o1 on p1.driver_id = o1.driver_id
full outer join Participated part on part.license = o1.license;

Uwagi:

  • Po FROM możesz wymienić niektóre relacje (oddzielone przecinkami), a relacją może być również a FULL OUTER JOIN b ON ... formularz jak napisałeś poprawnie.
  • Możesz także połączyć je w łańcuchy (w nawiasach, jeśli wolisz) jako

    a FULL OUTER JOIN b ON ... FULL OUTER JOIN c ON ...
    
  • Możesz nie posługiwać się AND do łączenia relacji, które są używane tylko do łączenia warunków.
  • Można zawęzić instrukcję, aby utworzyć podzapytanie, takie jak

    (SELECT * FROM a FULL OUTER JOIN b ON ...) AS t
    

    ale pamiętaj, że potrzebujesz SELECT * na początku, aby przekształcić go w relację, aw większości systemów potrzebujesz aliasu po (t w przykładzie).


0 dla odpowiedzi nr 2
SELECT p1.driver_id, p1.name, o1.driver_id, o1.license, part.license, part.amount
FROM person p1
FULL OUTER JOIN owns o1
ON p1.driver_id = o1.driver_id
FULL OUTER JOIN Participated part
ON part.license = o1.license