PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nối các bảng trên các cột của khóa ngoại / khóa chính tổng hợp trong một truy vấn

Có một NATURAL JOIN :

SELECT *
FROM   subscription
NATURAL JOIN delivery;

Trích dẫn hướng dẫn sử dụng SELECT :

Nó sẽ hoạt động cho thiết lập thử nghiệm của bạn, nhưng nó không thực hiện đúng những gì bạn yêu cầu . Kết nối dựa trên tất cả các cột có cùng tên. Các khóa ngoại không được xem xét. Các trường hợp NATURAL JOIN là một ý tưởng hay là rất ít và xa.

Đơn giản hóa mã / bớt dài dòng

Đối với người mới bắt đầu, bạn có thể sử dụng bí danh bảng và bạn không cần dấu ngoặc đơn xung quanh các điều kiện tham gia với ON (không giống như với USING ):

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

Vì tên cột trong điều kiện kết hợp giống hệt nhau, bạn có thể đơn giản hóa hơn nữa với USING :

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

Không có biến thể cú pháp nào tạo các phép nối dựa trên các ràng buộc khóa ngoại một cách tự động. Bạn sẽ phải truy vấn danh mục hệ thống và xây dựng SQL động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm ra số tháng giữa 2 ngày

  2. Giải pháp thay thế tốt nhất để đặt lược đồ PostgreSQL bằng PHP PDO

  3. Làm cách nào để đặt lại chuỗi khóa chính của postgres khi nó không đồng bộ?

  4. Chèn hàng loạt với pg-hứa

  5. Thêm tên bảng vào mỗi cột trong tập hợp kết quả trong SQL? (Cụ thể là Postgres)