/ / Múltiplas junções dão a instrução sql não finalizada corretamente - sql, oracle, oracle-sqldeveloper

Múltiplas junções fornecem a instrução sql não finalizada corretamente - sql, oracle, oracle-sqldeveloper

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

Nã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 uma a 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