aqui está minha consulta:
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)
Eu recebo a instrução sql não finalizada corretamente. Eu só quero criar a tabela como parte do meu processo de resolução de um problema mais complicado.
Respostas:
1 para resposta № 1Não é assim que você define as relações no FROM
parte. Tente o seguinte:
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;
Notas:
- Depois de
FROM
você pode listar algumas relações (separadas por vírgula) e uma relação também pode ser umaa FULL OUTER JOIN b ON ...
como você escreveu corretamente. Você também pode encadeá-los (com colchetes, se preferir) como
a FULL OUTER JOIN b ON ... FULL OUTER JOIN c ON ...
- Você pode não usar
AND
para conectar relações, que é usado apenas para conectar condições. Você pode agrupar uma instrução para formar uma subconsulta, como
(SELECT * FROM a FULL OUTER JOIN b ON ...) AS t
mas note que você precisa do
SELECT *
no começo para transformá-lo em uma relação e, na maioria dos sistemas, você precisa de um alias depois (t
no exemplo).
0 para resposta № 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