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

Остави присъединяване, сумиране и броене на група по

Вашият проблем е, че когато имате два (или повече) store редове и две (или повече) pics редове за единична goods ред, в крайна сметка получавате продукта от всички комбинации от редове.

За да поправите това, направете агрегирането си, преди да се присъедините:

SELECT 
  good.id, 
  good.title, 
  IFNULL(s.storerest, 0) AS storerest, 
  IFNULL(p.picscount, 0) AS picscount
FROM goods 
LEFT JOIN (
  SELECT goodid, sum(rest) AS storerest
  FROM store
  GROUP BY goodid
) s ON (goods.id = s.goodid) 
LEFT JOIN (
  SELECT goodid, count(id) AS picscount
  FROM pics
  GROUP BY goodid
) p ON (goods.id = p.goodid) 


  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:Активирайте LOAD DATA LOCAL INFILE

  2. Проблем с ОСНОВЕН КЛЮЧ при създаване на таблици в Rails с помощта на команда rake db:migrate с mysql

  3. Как мога да принудя да изляза всички потребители на уебсайт?

  4. Как да използвате динамично множество бази данни за един модел в CakePHP

  5. SQL инжекцията не работи правилно