![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 13.02.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Problem polega na tym, ze jak w jednym zapytaniu licze rekordy z dwoch tabel to mi je mnozy np.:
W zapytaniu mam liczone ilosc komentarzy i glosow dla konkretnego uzytkownika. Wynik mam taki: howComments = 12, howVotes = 12. Jednak rzeczywiscie powinno byc howComments = 4, howVotes = 3. Dlaczego to mnozy ? Przeciez tabele sa oddzielone, jest group by na id usera. Macie jakis pomysl ? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ale nie pomyślałeś, że JOINując w ten sposób tworzysz comments * votes rekordów dla każdego usera zapewne?
![]() W przypadku takiego zapytania, gdzie dane się kiepsko łączą można albo utworzyć podzapytanie, albo rozbić je na większą ilość zapytań, co będzie wydajniejsze zazwyczaj zresztą, ponieważ uniknie się niepotrzebnego kolejnego JOINowania na już i tak zazwyczaj dużej (wcześniejszy JOIN lub nawet kilka) tabeli, zanim do WHERE czy GROUP BY dojdziemy. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 20:49 |