Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]Optymalne wyciąganie rekordów z danej kategorii
matix
post
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:
  1. 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:
  1. (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)
  2. UNION
  3. (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)
  4. UNION
  5. (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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
matix
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

Ostrzeżenie: (0%)
-----


@Sniver, podałeś dokładnie to samo co ja, tylko jeszcze mniej optymalne (samo "having" jest dość ciężkie).

Bardziej zależy mi na optymalnym rozwiązaniu mojego problemu poprzez jedno zapytanie.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 23:55