sql >> Database >  >> RDS >> Oracle

Zijn geneste haakjes in de FROM-clausule geldige Oracle SQL-syntaxis?

Het is een juridische syntaxis om haakjes te gebruiken in een join-clausule in een FROM , en de haakjes doen effect hebben.

Overweeg deze vraag:

WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
     table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
     table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM   table_a a left join ( table_b b inner join table_c c ON c.id = b.id ) ON b.id = a.id 
ORDER BY 1,2,3;

Met de haakjes kunt u een inner join doen van tabellen b en c en voeg dat vervolgens aan de buitenkant toe aan a .

Zonder de haakjes zou het onmogelijk zijn om dat uit te drukken als een left join. U krijgt de rijen 11-30 niet uit tabel a of anders rijen 11-20 van tabel c zou null zijn s (afhankelijk van hoe je het hebt geprobeerd).

Merk op dat de bovenstaande vraag gelijk is aan:

WITH table_a AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 30),
     table_b as ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 20),
     table_c AS ( SELECT rownum id FROM DUAL CONNECT BY LEVEL <= 10)
SELECT a.id, b.id, c.id
FROM   table_b b inner join table_c c on c.id = b.id right join table_a a on a.id = b.id 
ORDER BY 1,2,3;

, waarvoor geen haakjes nodig zijn. Dus als u echt wilt voorkomen dat u haakjes gebruikt in de FROM clausule, kunt u dat meestal doen. Persoonlijk geef ik de voorkeur aan de LEFT JOIN methode met haakjes in plaats van een RIGHT JOIN .



  1. De totale gegevensgrootte van de BLOB-kolom in een tabel berekenen

  2. Een query uitvoeren op Postgresql met Hibernate (JPA) vindt geen tabel

  3. Update-query om rijen in MySQL bij te werken

  4. SMALLDATETIMEFROMPARTS() Voorbeelden in SQL Server (T-SQL)