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)
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:
SELECT cat_name FROM cms_categories LIMIT 0, 5
Następnie tworzymy drugie zapytanie, które wyciąga po 4 filmy do danej kategorii, wyglądające mniej więcej tak:
(SELECT video_id,video_title,video_length,video_image,video_views,video_rating,video_cat_id,video_service_id FROM cms_views_video WHERE video_cat_id = 10 AND video_state = 1 LIMIT 0, 4) UNION (SELECT video_id,video_title,video_length,video_image,video_views,video_rating,video_cat_id,video_service_id FROM cms_views_video WHERE video_cat_id = 9 AND video_state = 1 LIMIT 0, 4) UNION (SELECT video_id,video_title,video_length,video_image,video_views,video_rating,video_cat_id,video_service_id FROM cms_views_video WHERE video_cat_id = 8 AND video_state = 1 LIMIT 0, 4)
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?