Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL GROUP BY множество колони от различни таблици

Вашето запитване

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;

Да кажем, че има само един запис в d и той е type_a. Има два записа в ta и tb всеки. Записът в d съвпада с един от записите в ta на d.type_id=ta.id . Следователно, тази комбинация от (d x ta) позволява ВСЕКИ tb запис да остане в крайния резултат. Получавате непредвиден декартов продукт.

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. Mysql заявка към ElasticSearch

  2. ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на версията на вашия MySQL сървър, за правилния синтаксис, който да използвате

  3. Как да изберете един ред въз основа на максималната стойност в няколко реда

  4. Rails `where` за време по-малко от заявки

  5. SQL заявка за множество таблици, с множество съединения и поле с колони със списък, разделен със запетая