Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] LEFT JOIN, count i grupowanie
Forum PHP.pl > Forum > Bazy danych > MySQL
pionas
Hej,

mam dwie tabele:
articles
article_id // id artykułu
article_title // tytuł artykułu
article_date_added // data dodania artykułu

articles_readed
user_id // id użytkownika
article_id // id artykułu
flag // 1 - przeczytany, 2 - dodany do schowka
i mam zapytanie
  1. SELECT a.*, count(b.article_id) flag1 FROM articles a LEFT JOIN articles_readed b ON (b.flag=1 AND a.article_id=b.article_id) GROUP BY a.article_id

W ten sposób wyświetlam ile osób przeczytało artykuł, a jak do tego zapytania dodać liczbę osób które dodały artykuł do schowka?
Gdy dodaję jeszcze jedno LEFT JOIN
  1. SELECT a.*, count(b.article_id) flag1, count(c.article_id) flag2 FROM articles a LEFT JOIN articles_readed b ON (b.flag=1 AND a.article_id=b.article_id) LEFT JOIN articles_readed c ON (c.flag=2 AND a.article_id=c.article_id) GROUP BY a.article_id

wychądzą brednie...
mmmmmmm
  1. SELECT a.*, count(case when flag=1 then b.article_id end) flag1, count( case when flag=2 then b.article_id end) flag2 FROM articles a LEFT JOIN articles_readed b ON (b.flag IN (2,1) AND a.article_id=b.article_id) GROUP BY a.article_id
pionas
Działa, wielkie dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.