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 № 1Nie 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