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

NHÓM MySQL BẰNG nhiều cột từ các bảng khác nhau

Truy vấn của bạn

SELECT sum(d.data) as total
FROM data d, ta, tb
WHERE
(d.type LIKE "type_a" AND d.type_id = ta.id) 
OR 
(d.type LIKE "type_b" AND d.type_id = tb.id) 
GROUP BY a.customer_id, b.customer_id;

Giả sử chỉ có một bản ghi trong d, và nó là type_a. Có hai bản ghi trong ta và tb mỗi. Bản ghi trong d khớp với một trong các bản ghi trong ta trên d.type_id=ta.id . Do đó, sự kết hợp của (d x ta) cho phép BẤT KỲ bản ghi tb nào vẫn nằm trong kết quả cuối cùng. Bạn nhận được một sản phẩm không mong muốn của cartesian.

SELECT x.customer_id, SUM(data) total
FROM
(
    SELECT ta.customer_id, d.data
    FROM data d JOIN ta
       ON (d.type LIKE "type_a" AND d.type_id = ta.id) 
    UNION ALL
    SELECT tb.customer_id, d.data
    FROM data d JOIN tb
       ON (d.type LIKE "type_b" AND d.type_id = tb.id) 
) X
GROUP BY x.customer_id;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật nhiều hàng với các khóa đã biết mà không cần chèn các hàng mới nếu tìm thấy các khóa không tồn tại

  2. CHỌN VÀO không hoạt động

  3. MySQL Giá trị ngày giờ không chính xác:'0000-00-00 00:00:00'

  4. PHP PDOException:SQLSTATE [HY093]:Số tham số không hợp lệ

  5. Biến do người dùng định nghĩa trong MySQL trong mệnh đề WHERE