Bazy danych SQL - Wyświetlanie wyników nie mających wartości
Dartam - 29-03-2013, 23:34 Temat postu: Wyświetlanie wyników nie mających wartości Witam,
mam problem z sporządzeniem zapytania SQL. Obecnie mam takie coś:
Kod: | SELECT YEAR(FROM_UNIXTIME(post_time)) as aar, MONTH(FROM_UNIXTIME(post_time)) as mnd, COUNT(*) AS ant
FROM phpbb_posts
WHERE poster_id = '2'
GROUP BY YEAR(FROM_UNIXTIME(post_time)), MONTH(FROM_UNIXTIME(post_time))
ORDER BY post_time |
Zapytanie to wyświetla ilość postów użytkownika o id=2 napisanych w danym miesiącu i roku. Jednak nie wyświetla wyników, gdy w danym miesiącu użytkownik nie napisał w ogóle żadnych postów. Mógłby mi ktoś pomóc, jak przerobić to zapytanie żeby wyświetlało również właśnie gdy nie ma żadnych wiadomości w miesiącu (ant==0)?
Tommekk80 - 30-03-2013, 09:06
Zobacz sobie jak to jest tu - http://przemo.org/phpBB2/...ic.php?t=143340
Dartam - 30-03-2013, 10:22
Tommekk80, identycznie. Kod jest właśnie stąd.
Tommekk80 - 30-03-2013, 10:44
Na screenie widać, że wyświetla '0'.
Dartam - 30-03-2013, 10:58
Tommekk80, ale to nie jest powodem zapytania. Tylko po prostu generuje cały rok, gdy któryś z miesięcy ma >0 postów. I problemem jest właśnie, że nie wyświetla lat, w których nie ma w ogóle napisanych postów (w żadnym z miesięcy).
MQs - 30-03-2013, 20:30
Próbujesz wyświetlić coś czego nie ma w bazie, bo nie istnieje nie tylko liczba postów z tego okresu, ale także sam okres.
Najprościej dopełniać takie dane przez skrypt, ale jeśli upierasz się przy zapytaniu to musisz chyba kombinować z dodatkową tabelą poszczególnych miesięcy i lat, następnie dołączać do niej ilość postów przez LEFT JOIN, a wyniki NULL zamienić na 0 przez COALESCE(COUNT(p.*), 0).
|
|
|