Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Wählen Sie mit COUNT aus, der eine NULL-Zeile zurückgibt

Ich denke, Sie wollen einen left join anstelle eines inner join da Sie anstelle einer fehlenden Zeile eine Zählung von 0 zurückgeben möchten, wenn es keinen übereinstimmenden c gibt Datensatz für einen gegebenen b aufnehmen.

Außerdem sollten Sie ein group by einfügen bei Verwendung einer Aggregatfunktion wie count .

SELECT
    b.b_id,
    COUNT(DISTINCT c.c_id) AS count
FROM 
    b 
    LEFT JOIN c 
        ON b.b_id=c.b_id  
        AND c.active='yes' 
WHERE b.featured='no'
GROUP BY b.b_id