Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Jedno zapytanie z 3, 2 zalezne od 1 z 3
Qss
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://dev.mysql.com/doc/refman/5.0/en/union.html

ps: w 3 chyba mialo byc "<" (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Qss
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


w sumie tak po prostu skopiowałem powyższe i zapomniałem poprawić ;]
dzięki poczytam
Go to the top of the page
+Quote Post
Koniczynka
post
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 24.05.2006

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


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 ?

Ten post edytował Koniczynka 5.10.2009, 10:32:31
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?
Go to the top of the page
+Quote Post
Qss
post
Post #6





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


sa mozliwe jeszcze jakieś podpowiedzi bo nie moge tego ogarnąć ;]
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no przeciez dostales: UNION. czego nie mozesz tu ogarnąc? W linku co podalem masz przykłady
Go to the top of the page
+Quote Post
Qss
post
Post #8





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


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
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Z pomocą przyjdzie Ci:
  1. $zap = mysql_query('...') or die(mysql_error());
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Qss
post
Post #11





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


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ć
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
czyli te 2 dalej nie są zależne od pierwszego a miały być
no wlasnie są i dlatego nie widzą t1 (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Qss
post
Post #13





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

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: 15.09.2025 - 01:46