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

Tham gia đầy đủ bên ngoài SQL với nhiều bảng

Bạn cần thực hiện một trong hai điều (và cả hai điều này đều giả định rằng Table0 có tất cả các bản sao của num ) -

  1. Nếu tất cả các hàng đã được tổng hợp cho các bảng 'lá' (1 - 4), thì một LEFT JOIN đơn giản (với COALESCE() trong lựa chọn) là đủ - bạn thậm chí không cần GROUP BY .

  2. Nếu bạn cần các hàng được tổng hợp, bạn sẽ cần phải tính tổng chúng trước nối, nếu không thì nhiều hàng trên mỗi số trong các bảng khác nhau sẽ khiến kết quả bị nhân lên .

Một cái gì đó như thế này:

SELECT Table0.num, COALESCE(Table1.qty, 0), COALESCE(Table2.qty, 0), 
                   COALESCE(Table3.qty, 0), COALESCE(Table4.qty, 0)
FROM Table0
LEFT JOIN (SELECT num, SUM(qty1) as qty
           FROM Table1
           GROUP BY num) Table1
ON Table1.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty2) as qty
           FROM Table2
           GROUP BY num) Table2
ON Table2.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty3) as qty
           FROM Table3
           GROUP BY num) Table3
ON Table3.num = Table0.num
LEFT JOIN (SELECT num, SUM(qty4) as qty
           FROM Table4
           GROUP BY num) Table4
ON Table4.num = Table0.num

(làm việc ví dụ SQLFiddle )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python, mysql.connector Lỗi:Không có kết quả nào được đặt để tìm nạp từ; cgitb hiển thị giá trị chính xác được chuyển đến hàm

  2. Quyền truy cập mysqldbcompare bị từ chối nhưng lệnh mysql hoạt động

  3. Bảng MySQL Alter, thêm cột với giá trị ngẫu nhiên duy nhất

  4. Độ dài của một chuỗi id phiên PHP là gì?

  5. Truy vấn con chậm trong MySQL