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

Vícenásobné počty v rámci jednoho SQL dotazu

@VoteyDisciple odpověď je na správné cestě, ale jeho dotaz potřebuje nějaká vylepšení:

SELECT c.id, c.title,
    SUM(ts1.section_id = 1) AS doc1,
    SUM(ts1.section_id = 2) AS doc2,
    SUM(ts1.section_id = 3) AS doc3,
    SUM(ts1.section_id = 4) AS doc4
FROM category AS c
  LEFT JOIN category_link_section AS ts1
    ON (c.id = ts1.category_id)
GROUP BY c.id;

Vysvětlení:

  • IF() výrazy jsou nadbytečné, protože rovnost již vrací 1 nebo 0.
  • Použijte ts1.section_id=1 mimo podmínku spojení, jinak nikdy nezískáte druhý section_id hodnoty.
  • Seskupit podle c.id pouze. Předpokládám, že OP chce pouze jeden řádek na kategorii a sloupce pro počty každého section_id hodnotu pro příslušnou kategorii. Pokud je dotaz seskupen podle c.id, ts1.section_id , pak by byly až čtyři řádky na kategorii.
  • Přesuňte čárky ve výběrovém seznamu. Čárky plovoucí na začátku řádku vypadají ošklivě.;-)


  1. Proč je PHP PDO DSN odlišný formát pro MySQL oproti PostgreSQL?

  2. Psycopg / Postgres :Spojení se setkávají náhodně

  3. MySQL now() změnit časové pásmo

  4. 5 hlavních výhod migrace do Azure SQL Database