Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] problem z poprawnym zliczaniem rekordow w widoku (count/group by)
Forum PHP.pl > Forum > PHP > Frameworki
gemini2201
Witam

Jest zapytanie ktore dziala calkiem ladnie - ma pokazywac ilosc postow uzytkownika z podzialem na typy (zaakceptowane, odrzucone, poprawione, etc) . Zapytanie samo w sobie dziala OK. Jednakze po utworzeniu widoku z tego zapytania zamiast liczby postow dla kazdego uzytkownika pokazuje w rekordzie sumaryczna ilosc postow dla wszystkich uzytkownikow (tak jakby warunek z uzytkownikiem nie byl brany pod uwage..
  1. SELECT `sf_guard_user_id` AS uid,
  2. sf_guard_user.username AS username,
  3. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid ) AS total,
  4. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid AND STATUS=0 ) AS new,
  5. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid AND STATUS=1 ) AS accepted,
  6. FROM manual_post,sf_guard_user WHERE manual_post.sf_guard_user_id=sf_guard_user.id
  7. GROUP BY uid

Zapytanie daje wynik:
Kod
uid, username, total, new, accepted
1,   admin,        4,     0,       4
2,   admin2,      2,      0,       1
3,   writer_test, 5,      4,       0


a w widoku natomiast

Kod
uid, username, total, new, accepted
1,   admin,        11,     4,       5
2,   admin2,      11,      4,       5
3,   writer_test, 11,      4,       5

czyli z jakiegos powodu sumuje posty/rekordy dla wszystkich uzytkownikow


Czy to jakis bug, czy to ja czegos nie rozumiem? Z widokami szczerze mowiac zbyt czesto nie mam do czynienia... a nie moge dopatrzyc sie bledu, no i na 2ch serverach dziala tak samo.
thomas2411
Ale na podstawie tego co napisałeś nic nie wywnioskujemy. Wklej kod tego, jak wyświetlasz dane.
gemini2201
Owszem w ramach symfony to jest (a raczej bedzie), ale problem dotyczy mysql'a na 100%, a nie jest w zaden sposob zalezny od symfony (dlatego umiescilem to w forum o mysql).

Kodu do wyswietlania danych poki co w ogole nie ma... smile.gif (ale docelowo to ma trafic do admin generatora - po to chce widok zrobic smile.gif...
Zapytania poki co wykonuje z poziomu phpmyadmina, wiec symfony nie ma nic do tego.

Zapytanie normalne jakie wykonuje to (tak jak powyzej):
  1. SELECT `sf_guard_user_id` AS uid,
  2. sf_guard_user.username AS username,
  3. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid ) AS total,
  4. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid AND STATUS=0 ) AS new,
  5. (SELECT count(id) FROM manual_post WHERE `sf_guard_user_id`=uid AND STATUS=1 ) AS accepted,
  6. FROM manual_post,sf_guard_user WHERE manual_post.sf_guard_user_id=sf_guard_user.id
  7. GROUP BY uid

dziala zgodnie z zalozeniami

a w utworzonym widoku na podstawie tego zapytania daje po prostu
  1. SELECT * FROM widok

daje w efekcie bzdury
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.