Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL GROUP BY beberapa kolom dari tabel yang berbeda

Permintaan Anda

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;

Katakanlah hanya ada satu record di d, dan itu adalah type_a. Ada dua catatan di masing-masing ta dan tb. Record di d cocok dengan salah satu record di ta di d.type_id=ta.id . Oleh karena itu, kombinasi dari (d x ta) memungkinkan catatan tb APAPUN untuk tetap berada di hasil akhir. Anda mendapatkan produk kartesius yang tidak diinginkan.

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. Tampilan MySql sangat lambat. Mengapa?

  2. Cara Mempertahankan Garis Miring Balik saat Melepas Kutipan di MySQL – QUOTE()

  3. Silakan instal adaptor mysql 'gem install activerecord-mysql-adapter'

  4. Beban Kerja Database OLTP/Analytics Hibrida di Cluster Galera Menggunakan Slave Asinkron

  5. cara membangun aplikasi php mysql yang bekerja offline