PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Połącz tabele w kolumnach złożonego klucza obcego/podstawowego w zapytaniu

Istnieje NATURAL JOIN :

SELECT *
FROM   subscription
NATURAL JOIN delivery;

Cytując instrukcję SELECT :

Działałoby to w przypadku konfiguracji testowej, ale nie robi dokładnie tego, o co prosisz . Połączenie opiera się na wszystkich kolumnach o tej samej nazwie. Klucze obce nie są brane pod uwagę. Przypadki, w których NATURAL JOIN to dobry pomysł, są bardzo nieliczne.

Uprość kod / mniej gadatliwy

Na początek możesz użyć aliasów tabel i nie potrzebujesz nawiasów wokół warunków złączenia z ON (w przeciwieństwie do USING ):

SELECT *
FROM   subscription s
JOIN   delivery     d ON d.magazine_id = s.magazine_id
                     AND d.user_id = s.user_id;

Ponieważ nazwy kolumn w warunkach łączenia są identyczne, możesz jeszcze bardziej uprościć za pomocą USING :

SELECT *
FROM   subscription s
JOIN   delivery     d USING (magazine_id, user_id);

Nie ma wariantu składni, który automatycznie tworzy sprzężenia na podstawie ograniczeń klucza obcego. Musiałbyś przeszukiwać katalogi systemowe i dynamicznie budować SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać zmiennych skryptowych w psql?

  2. Jaki jest odpowiednik JDBC polecenia \connect Postgresa?

  3. Jak uruchomić serwer PostgreSQL w systemie Mac OS X przez Homebrew?

  4. Zamówienie warunkowe według

  5. ponowne użycie pqxx / reaktywacja transakcji roboczej