sql >> Databáze >  >> RDS >> Mysql

Jak MySQL nezahrnuji duplicitní řádky, když používám SUM a COUNT s více INNER JOINS?

Zde je jedno řešení. Nejprve zmenšete sadu na odlišné řádky v odvozené tabulce a poté na tento výsledek použijte GROUP BY:

SELECT SUM(case when d.status = 2 then d.value end) as 'val_accepted'
FROM (
  SELECT DISTINCT p.id, p.status, p.value, pc.library_id
  FROM props p
  INNER JOIN p_contents AS pc ON p.id = pc.prop_id
  INNER JOIN contents AS c ON c.id = pc.library_id
  WHERE p.account_id = 3) AS d
GROUP BY d.library_id

Používáte DISTINCT(pc.library_id) ve vašem příkladu jako by DISTINCT platilo pouze pro sloupec v závorkách. To je běžná mylná představa. DISTINCT platí pro všechny sloupce výběrového seznamu. DISTINCT není funkce; je to modifikátor dotazu.




  1. Potřeba integrovat IDX MLS do webové stránky

  2. Jak generovat příkazy vložení z textových souborů pro tabulku SQL Server v SQL Server - SQL Server / Výukový program TSQL, část 106

  3. Složitý COUNT dotaz v MySQL

  4. Cizí klíč MySQL – nelze rozpoznat název tabulky Zavřít TO