Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista kategorii + info z drugiej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
pabbito
Mam takie dwie tabele:

Fotki:
- Id_fotki
- Kolejnosc
- Kategoria_id

Kategorie:
- Id_Kategorie
- Nazwa
- Kolejnosc
- Aktywna

Chciałbym uzyskać w efekcie jednego zapytania listę Nazw aktywnych kategorii wraz z ilością fotek w danej kategorii oraz Id_fotki o Kolejnosci równej najmniejszej liczbie spośród występujących w danej kategorii.

Czyli:
| Nazwa Kategorii | Id pierwszej fotki | Ile fotek w kategorii |

Zrobiłem coś takiego:
  1. SELECT k.Nazwa, f.Id_Fotki, COUNT(f.Id_Fotki) AS ile
  2. FROM Kategorie
  3. AS k
  4. LEFT JOIN Fotki AS f ON (k.Id_Kategorie = f.Kategoria_id)
  5. WHERE k.Aktywna = 1
  6. GROUP BY f.Kategoria_id
  7. ORDER BY k.Kolejnosc


I działa prawie dobrze tylko nie wiem jak zrobić, żeby f.Id_Fotki to było id fotki o najmniejszej wartości f.Kolejnosc spośród tych w danej kategorii.
Może ktoś mógłby udzielić wskazówek jak to poprawić?

Czy GROUP BY jakoś sortuje wynik? Jeśli tak to wg jakiego klucza?
Spike
  1. SELECT k.Nazwa, MIN(f.Id_Fotki), COUNT(f.Id_Fotki) AS ile
  2. FROM Kategorie
  3. AS k
  4. LEFT JOIN Fotki AS f ON (k.Id_Kategorie = f.Kategoria_id)
  5. WHERE k.Aktywna = 1
  6. GROUP BY f.Kategoria_id
  7. ORDER BY k.Kolejnosc
pabbito
No nie bardzo.

Może rozjaśnię o co chodzi. W każdej kategorii jest pewna liczba fotek. Każda ma przypisaną kolejność za pomoca liczb (integer). Chodzi o to żeby dla kazdej kategorii wybrać reprezentującą fotkę (starczy jej Id. Ale ta fotka ma być pierwsza w kolejności z danej kategorii, czyli musi mieć najmniejszą wartość f.Kolejnosc

Edit, po długich bojach:
  1. SELECT k.Nazwa, MIN(f.Id_Fotki) AS id, f.Kolejnosc, COUNT(f.Id_Fotki) AS ile
  2. FROM Kategorie
  3. AS k
  4. LEFT JOIN Fotki AS f ON (k.Id_Kategorie = f.Kategoria_id)
  5. WHERE k.Aktywna = 1
  6. GROUP BY f.Kategoria_id
  7. ORDER BY k.Kolejnosc

jednak wydaje się działać. Dopisałem tylko AS id, bo za pierwszym razem tego nie miałem i od razu nie wyszło mi to co trzeba.

Mam jednak zagwostkę: Id_Fotki jest wybierane poprawnie, tzn jest to id fotki o najmniejszej kolejnosci, jednak gdy chcę wyświetlić wartość tej kolejności to tak jaby była wzięta z innego rekordu.

Czy ktoś mógłby mi to wyjaśnić?
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-2024 Invision Power Services, Inc.