sql >> Database teknologi >  >> RDS >> Mysql

MySQL GROUP BY flere kolonner fra forskellige tabeller

Din forespørgsel

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;

Lad os sige, at der kun er én post i d, og det er type_a. Der er to poster i ta og tb hver. Posten i d matcher en af ​​posterne i ta på d.type_id=ta.id . Derfor tillader denne kombination af (d x ta) ENHVER tb-post at forblive i det endelige resultat. Du får et utilsigtet kartesisk produkt.

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. Viser mysql-data i html-tabel PHP

  2. MySQL LEFT JOIN 3 borde

  3. Hvordan man pivoterer tabeller i MySQL

  4. MySQL - tæl det samlede antal rækker i php