Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy nawiasy zagnieżdżone w klauzuli FROM są poprawną składnią Oracle SQL?

Prawidłowa składnia jest używanie nawiasów w klauzula łączenia w FROM , a nawiasy do mieć wpływ.

Rozważ to zapytanie:

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;

Nawiasy pozwalają na wewnętrzne łączenie tabel b i c a następnie dołączyć na zewnątrz do a .

Bez nawiasów próba wyrażenia tego jako sprzężenia lewego byłaby niemożliwa. Albo nie otrzymasz wierszy 11-30 z tabeli a lub wiersze 11-20 tabeli c byłoby null s (w zależności od tego, jak próbowałeś to zrobić).

Zauważ, że powyższe zapytanie jest równoważne z:

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;

, który nie wymaga nawiasów. Więc jeśli naprawdę chcesz uniknąć używania nawiasów w FROM klauzuli, zazwyczaj możesz to zrobić. Osobiście wolę LEFT JOIN metoda z nawiasami zamiast RIGHT JOIN .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj tabelę z innej tabeli w Oracle

  2. Połączenie z bazą danych Zawsze rozłączaj się podczas programowania na tym samym komputerze co DB

  3. Create_record formularze wyroczni

  4. Kwerenda scalająca zwracająca ORA-30926:nie można uzyskać stabilnego zestawu wierszy w tabelach źródłowych

  5. Oracle SQL:Odbieranie błędu „brak pasującego unikalnego lub podstawowego klucza” i nie wiem dlaczego