Wyliczenie countow dla dwoch tabel w jednym zapytaniu.

0

Czesc chcialbym wyliczyc odpowiednie wyniki dla dwoch tabel w jednym zapytaniu. Problem polega na tym ze musi to byc zrobione dla wszystkich uzytkownikow i dlatego powstaja problemy. A wiec tak
Tabela users:
user_id,name,lastname,age
Tabela articles:
article_id,user_id,title,desc
Tabela likes:
like_id,article_id,user_id

A teraz zapytanie, ktore niestety nie dziala.

SELECT u.user_id,a.article_id,a.title,a.desc,l.like_id FROM users u LEFT JOIN articles a ON a.user_id = u.user_id LEFT JOIN likes l ON l.article_id = a.article_id
 

Problem polega na tym, ze dopoki nie dodam tabeli likes wszystko jest OK. Po prostu gdy ja dodaje powstaje mi dodatkowy rekord, i nie ma mozliwosci jakos go zlapac przy councie bo nie daje zadnego nulla dla artykolow. Like policze dobrze, ale artykuly juz nie. Wiem, ze tutaj nie dalem count(), ale po samych wynikach w selectach widac ze tego nie policzy, oczywiscie count tez robilem. Robilem count(a.article_id), count(l.like_id) ale artykuly sie nie zgadzaly bo nie dawaly nulla

0

ale co ma być wynikiem bo czytam już któryś raz i nie wiem OCB

0

To jeszcze sprobuj z Count(DISTINCT pole )

0

Marcin, chyba dziala. Musze to przetestowac. Kompletnie nie pomyslalem o distinct, bo jak na razie kombinowalem tak, ze wymylsilem inny sposob z unionen i dodatkowa tabela na metody, czyli 'count_likes' albo 'count_articles' ale Twoje rozwiazanie chyba pojdzie. Przetestuje

0

Ale napisz jeszcze co właściwie chciałeś policzyć, bo nie wiadomo o co chodzi.

0

Chcialem policzyc ilosc arytkulow, jak i ilosc like'ow ile zebral ogolem user.

0

Ja tu w ogóle nie widze group by żadnego a powinno być po userze...

0

Jest group by jest, tylko zapomnialem tutaj akurat dodac. Wszystko juz dziala dzieki panu Marcinowi

0
SELECT u.user_id, a.article_id, a.articleCounter, l.likeCounter
FROM users u 
LEFT JOIN (SELECT COUNT(1) articleCounter, a.user_id, a.article_id FROM articles a GROUP BY a.user_id, a.article_id) a ON a.user_id = u.user_id 
LEFT JOIN (SELECT COUNT(1) likeCounter, l.article_id FROM likes l GROUP BY l.article_id) l ON l.article_id = a.article_id

1 użytkowników online, w tym zalogowanych: 0, gości: 1