Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
_olo_1984
witam

oto struktura tabel:

users:
id_user | login | ...

ithems:
id_ithem | id_user | ...

foto:
id_foto | id_ithem | ...

doc:
id_doc | id_ithem | ...

teraz chcę pobrać wszystkie ithemy, do każdego wyświetlić login usera, ilość foto i ilość doc

Moje zapytanie działające prawidłowo (ale nie mam ilości doc):
  1. SELECT i.*, u.login AS login, count(ff.id_foto) AS ile_foto
  2. FROM ".db_prefix."ithem AS i
  3. LEFT JOIN ".db_prefix."users AS u ON(i.id_user=u.id_user)
  4. LEFT JOIN ".db_prefix."foto AS ff ON(i.id_ithem=ff.id_ithem)
  5. GROUP BY i.id_ithem


i teraz keidy robię coś takiego:
  1. SELECT i.*, u.login AS login, count(ff.id_foto) AS ile_foto, count(dd.id_doc) AS ile_doc
  2. FROM ".db_prefix."ithem AS i
  3. LEFT JOIN ".db_prefix."users AS u ON(i.id_user=u.id_user)
  4. LEFT JOIN ".db_prefix."foto AS ff ON(i.id_ithem=ff.id_ithem)
  5. LEFT JOIN ".db_prefix."doc AS dd ON(i.id_ithem=dd.id_ithem)
  6. GROUP BY i.id_ithem


pokazuje głupoty. Błednie liczy ile_foto a ile_doc jest puste.
Byc może to banał ale nie mogę sobie poradzić.
Pozdr
melkorm
eh. pomógłbym ale alfą i omegą nie jestem i nie lubei strzelać zapytaniami za to lubie przetestować zapytanie które podaje i wtedy jestem pewien że działa - do czego zmierzam : jeżeli chcesz dostać dobre zapytanie najlepiej dać strukture i wycinek bazy do testów wtedy takie osoby jak ja mogą sobie wrzucić to do bazy i odrazu zacząć testy ... bo tworzyć tabeli i danych dla każdego który prosi o pomoc, to mi się szczerze nei chce xP

Oczywiście są osoby które znają zapytania na blache i wiedzą co i jak i napsizą tobie 7 linijkowe zapytanie bez żadnego błędu biggrin.gif No ale cóż ja do takich nie należe i wole przetestować, a więc możesz podać zrzuty tabel i paru wierszy do każdej lub czekać na tą drugą grupe ludzi smile.gif Zrobisz jak Tobie wygodniej biggrin.gif
_olo_1984
leniwcze tongue.gif

problem rozwiązałem w ten sposób:
  1. SELECT i.*, u.login AS login, count(ff.id_foto) AS ile_foto, (SELECT count(d.id_ithem) FROM doc AS d WHERE d.id_ithem=i.id_ithem) AS ile_doc
  2. FROM ithem AS i
  3. LEFT JOIN users AS u ON(i.id_user=u.id_user)
  4. LEFT JOIN foto AS ff ON(ff.id_ithem=i.id_ithem)
  5. GROUP BY i.id_ithem


jeżeli ktoś mógłby mi wyjaśnić, czemu ten pierwszy sposób nie działa to bardzobym prosił.
Pozdr
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.