sql >> Databáze >  >> RDS >> PostgreSQL

Vnitřní spojení &vnější spojení; je důležité pořadí tabulek od?

Věřím, že to můžete považovat za problém přednosti operátora.

Když napíšete toto:

FROM groups grp,
     insrel archiverel  
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber   

Myslím, že to analyzátor interpretuje takto:

FROM groups grp,
(
  (
     insrel archiverel  
     LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
  )
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
)

Pokud ano, pak v nejvnitřnějším spojení je „grp“ bez vazby.

Když obrátíte řádky pomocí "groups" a "insrel", nejvnitřnější spojení se vztahuje na "groups" a "ownrel", takže to funguje.

Pravděpodobně by to fungovalo také:

    FROM groups grp
         JOIN insrel archiverel  ON archiverel.dnumber = grp.number
    LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
    LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber 
WHERE archiverel.snumber = 11128188


  1. Rozdíl mezi místními a globálními dočasnými tabulkami v SQL Server

  2. Jak seskupit podle týdne v MySQL?

  3. ORA-01618

  4. Jak se mohu připojit k externí databázi z příkazu SQL nebo uložené procedury?