Wyliczenie countow dla dwoch tabel w jednym zapytaniu.

Wyliczenie countow dla dwoch tabel w jednym zapytaniu.
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
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

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

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

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

To jeszcze sprobuj z Count(DISTINCT pole )

  • Rejestracja: dni
  • Ostatnio: dni
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

BA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.