Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z zapytaniem
Forum PHP.pl > Forum > Przedszkole
dstp
mam 2 tabele:

cats_gallery
id | parent | name | desc

gallery
id | cat | name | src

na stronie glownej galerii wyswietlam tylko kategorie glowne (czyli te z parent == 0). W jednej z galerii glownych sa podgalerie (czyli te z parent == 1). Po wejsciu w jakas podgalerie wyswietlam zdjecia odpowiadajace id kategorii. To dziala jak nalezy.

Strona glowna galerii wyglada mniej wiecej tak:

nazwa galerii glownej
zdjecie | zdjecie | zdjecie | opis

nazwa galerii glownej2
zdjecie | zdjecie | zdjecie | opis

nazwa galerii glownej3
zdjecie | zdjecie | zdjecie | opis

nazwa galerii glownej5
zdjecie | zdjecie | zdjecie | opis

nazwa galerii glownej5
zdjecie | zdjecie | zdjecie | opis

te zdjecia to 3 ostatnie z danej galerii.

Problem pojawil sie przy wyswietlaniu 3 ostatnich zdjec z galerii glownej, ktora ma podgalerie... chcialbym zrobic tak, zeby byly 3 losowe zdjecia z tych podgalerii np. z podgalerii1, podgalerii2, podgalerii3.

zapytanie wyglada tak:

  1. $getImages = mysql_query("SELECT * FROM `gallery` WHERE `cat` = '".$cat['id']."' ORDER BY `id` DESC LIMIT 3");

i jak to teraz zrobic?

Wilwarin
a co z
  1. ORDER BY RAND()
?
dstp
rand() nic mi tu nie pomoze

przeczytaj temat jeszcze raz smile.gif
mortus
Może złączenie:
  1. $getImages = mysql_query("SELECT `g`.`id`, `g`.`cat`, `g`.`name`, `g`.`src` FROM `gallery` `g` LEFT JOIN `cats_gallery` `cg` ON `cg`.`id` = `g`.`cat` AND `cg`.`parent` = $cat['id'] ORDER BY `g`.`id` DESC LIMIT 3");

Choć im dłużej na nie patrzę, tym bardziej się zastanawiam, czy będzie działać. No i na pewno nie ma tu żadnej losowości (zresztą wcześniej też nie było). Alternatywą jest podzapytanie:
  1. $getImages = mysql_query("SELECT `g`.* FROM `gallery` `g` WHERE `g`.`cat` IN (SELECT `cg`.`id` FROM `cats_gallery` `cg` WHERE `cg`.`parent` = $cat['id'] ORDER BY RAND() LIMIT 3) ORDER BY `g`.`id` DESC");

Wszystko pisane z głowy i nie mam 100% pewności, że będzie działać. Zapytania wybierają obrazki tylko z podkategorii, aby dodatkowo pobierały obrazki z kategorii głównej, trzeba dopisać odpowiednie warunki. Zapytanie z podzapytaniem wybiera rekordy pseudolosowo, ale tym samym traci na optymalności. Zresztą to zapytanie z podzapytaniem, więc i może nie być optymalne. I nie jestem pewien, czy zadziała z LIMIT-em.
dstp
Prawie dobrze wink.gif

poprawiłem lekko i działa.
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.