предположим, этотИзбегайте нулевые результаты запроса
пользователя таблицу: [ID] [почта] [пропуск]
случаться таблица: [ID] [UID] [дата] [содержание]
стол голос [UID] [сокрытая] [тип] [DateTime]
1 пользователь может иметь 0 или более случиться, 1 случиться может иметь 0 или больше голосов ..
Я хочу, чтобы получить общее количество голосов для конкретного случаться
SELECT
H.*,
SUM(CASE WHEN V.type='C' THEN 1 ELSE 0 END) AS upvotes,
SUM(CASE WHEN V.type='R' THEN 1 ELSE 0 END) AS downvotes
FROM
happens H
LEFT JOIN
votes AS V
ON V.hid = H.id
WHERE
H.uid = :uid
проблема заключается в том, что если нет голосов не связано на случаться я получаю пустую строку из MySQL, не EMPTY, но NULL
как могу ли я избежать этого нулевого результата?
[править]
некоторые попытки:
основной
SELECT H.* FROM happens H LEFT JOIN votes AS V ON V.hid = H.id WHERE H.uid = '178d937'
результат -> пустой
Все остальные пытаются с SUM, COUNT, HAVING ЭСТ ЭСТ дает:
[id] [uid] [what] [latitude] [longitude] [date] [time] [hide] [upvotes] [downvotes]
NULL NULL NULL NULL NULL NULL NULL NULL 0 0
попробуйте это, вместо использования 'SUM' используйте' COUNT'. например, 'COUNT (CASE WHEN V.type = 'C' THEN 1 ELSE NULL END)' –
id uid, какая долгота даты по дате скрыть верхние горизонты downvotes NULL NULL NULL NULL NULL NULL NULL NULL 0 0 – Mindexperiment