Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Jedno zapytanie z 3
Forum PHP.pl > Forum > Przedszkole
Qss
Witam mam pytanie czy da się to zrobić w jednym zapytaniu ?

Kod
$zapytanie = mysql_query("SELECT * FROM photos WHERE id='".$id."' ");
$result=mysql_fetch_assoc($zapytanie);
$zapytanie2 = mysql_query("SELECT * FROM photos WHERE id>'".$id."' AND album = '".$result['album']."'  LIMIT 1"); // to ma na celu pobrac wszystkie dane zdjęcia o najbliższym większym id z pierwszego zapytania i ta sama kategoria/albumem
$zapytanie3 = mysql_query("SELECT * FROM photos WHERE id>'".$id."' AND album = '".$result['album']."'  LIMIT 1' "); // to samo co wyżej tylko mniejszym


jak się domyślacie jest mi to potrzebne do galerii z przyciskami następny poprzedni mogłbym zrobic na podstawie linków z +1 go GET id ale jeśli go nie bedzie bo np. będzie usunięty to trochę kicha ;p
nospor
http://dev.mysql.com/doc/refman/5.0/en/union.html

ps: w 3 chyba mialo byc "<" winksmiley.jpg
Qss
w sumie tak po prostu skopiowałem powyższe i zapomniałem poprawić ;]
dzięki poczytam
Koniczynka
A nie da rady tego złączyć?


  1. SELECT a.zdjecie AS zdjecieGlowne,
  2. FROM photos a
  3. LEFT JOIN photos p ON a.album = p.album AND p.id != '.$id.'
  4. WHERE a.id = '.$id.'


I potem w PHP oddzielić zdjęcia o mniejszym i o większym id od $id ?
nospor
wiesz jak mozna zastąpic twoje zapytanie? O tak:
  1. SELECT *
  2. FROM photos a

No i czemu to ma sluzyc? By pobrac nastepne/poprzednie to mam pobierac wszystkie rekordy z bazy?
Qss
sa mozliwe jeszcze jakieś podpowiedzi bo nie moge tego ogarnąć ;]
nospor
no przeciez dostales: UNION. czego nie mozesz tu ogarnąc? W linku co podalem masz przykłady
Qss
Kod
     $zap = mysql_query("(SELECT t1.* FROM photos AS t1 WHERE t1.id='".$id."')  UNION
(SELECT t2.id FROM photos AS t2 WHERE t2.id>'".$id."' AND t2.album = t1.album  LIMIT 1) UNION
(SELECT t3.id FROM photos AS t3 WHERE t3.id<'".$id."' AND t3.album = t1.album  LIMIT 1)");
    
    
     if($r = mysql_fetch_assoc($zap)){//cos tam}


i wyskakuje błąd Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...

więc tegonieogarniam
phpion
Z pomocą przyjdzie Ci:
  1. $zap = mysql_query('...') or die(mysql_error());
nospor
jak napisał phpion.Ja tylko wyjasnie bo od razu rzuca się bład:
liczba i typ zwracanych kolumn w kazdym select musi byc taka sama. A u ciebie nie jest.
Qss
Kod
$zap = mysql_query("(SELECT t1.* FROM photos AS t1  WHERE id='".$id."')  UNION
(SELECT * FROM photos WHERE id<'".$id."' AND album = t1.album  LIMIT 1) UNION
(SELECT * FROM photos WHERE id>'".$id."' AND album = t1.album  LIMIT 1)");
    
    
     if($r = mysql_fetch_assoc($zap)){//cos tam}


super zmieniłem to takiej formy ;]

ale przy mysql error wyskakuje
Kod
Unknown column 't1.album' in 'where clause'

czyli te 2 dalej nie są zależne od pierwszego a miały być
nospor
Cytat
czyli te 2 dalej nie są zależne od pierwszego a miały być
no wlasnie są i dlatego nie widzą t1 tongue.gif
Qss
mam tabele

id | album
1 | qqq
2 | www
3 | qqq
4 | www
5 | qqq

skoro tak to zrobiłem bez tego AD t1 itd.
po prostu album = album i tyle mam ustawione $id=3
i pierwszy wynik wyświetla poprawnie czyli tak
3qqq 1qqq 4www
właśnie 3 rekord jest niepoprawny bo powinno być 5qqq
nospor
musisz w kolejnych unionach dodac left join dla danego $id i po tym dobrać się do wlasciwego album.
wychodzi to troche zakrecone ale idzie zrobic winksmiley.jpg
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.