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

MySQL inkluderer nul rækker, når du bruger COUNT med GROUP BY

Du skal bruge en LEFT JOIN i stedet for en INNER JOIN . Du starter med at vælge alle voucher_types og derefter venstre join for at finde optællingen.

SELECT
  voucher_types.id AS voucher_type,
  IFNULL(vouchers_count.vouchers_remaining, 0) AS vouchers_remaining
FROM
  voucher_types
LEFT JOIN
  (
    SELECT
    v.type_id AS voucher_type,
    COUNT(v.id) AS vouchers_remaining
    FROM
    vouchers v
    WHERE
    v.sold = 0
    GROUP BY v.type_id
  ) AS vouchers_count
  ON vouchers_count.voucher_type = voucher_types.id


  1. Node.js returnerer resultat fra MySQL-forespørgsel

  2. cast en streng til sql time

  3. Mysql-serveren på MAMP starter ikke

  4. Nogle gode nyheder til Standard Edition-kunder i SQL Server 2014