![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 10 Dołączył: 13.02.2007 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Siema,
pytanie do mądrzejszych ode mnie i bardziej doświadczonych. W jaki sposób wyciągacie n rekordów z x kategorii. Przykład? Cytat Pobierz 5 kategorii oraz po 5 filmów do każdej z nich. Zakładając, że schemat bazy jest bardzo prosty Kod category: cat_id cat_name video: video_title video_cat_id (references cat_id) Obecnie po głębszych przemyśleniach moje rozwiązania: 1. wyciągamy np. 5 kategorii zapytaniem:
Następnie tworzymy drugie zapytanie, które wyciąga po 4 filmy do danej kategorii, wyglądające mniej więcej tak:
2. Jedno duże zapytanie JOIN. To akurat mój nowy pomysł, jednak nie wiem jakby takie zapytanie miało wyglądać. Generalnie wyglądałoby to mniej więcej tak, że te 2 zapytania byłyby ze sobą połączone, prawdopodobnie to drugie byłoby warunkiem WHERE cat_id IN (), jednak to jest znacznie bardziej skomplikowane. Więc teraz pytanie do Was, w jaki sposób rozwiązujecie takie rzeczy? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 4 Dołączył: 13.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT *
FROM ( SELECT c.* FROM category c, (SELECT @L:=0, @C:=0) init -- WHERE cat.id IN (1,2,3) -- ewentualnie ręczny wybór kategorii LIMIT /* liczba kategorii: */ 5 ) c LEFT JOIN video v ON IF(video_cat_id = cat_id AND IF(@L=cat_id,@C:=@C+1,(@L:=cat_id) AND @C:=0) <= /* liczba video: */ 5 ,1,0) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 21:23 |