Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wiele rekordów, wiele warunków z jednej tabeli jednym select-em?
vuq
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 11.07.2005

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


Panowie mam pytanie;

Czy da się połączyć do jednego zapytania takie klika zapytań z wieloma warunkami:

SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 ORDER BY data DESC LIMIT 1,1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 1 WEEK ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 2 WEEK ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 3 WEEK ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 1 MONTH ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 2 MONTH ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 3 MONTH ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 5 MONTH ) ORDER BY data DESC LIMIT 1;
SELECT pozycja FROM pozycje WHERE id_domeny=272 AND id_slowa=9395 AND data < DATE_SUB( NOW() , INTERVAL 6 MONTH ) ORDER BY data DESC LIMIT 1;

Chce wyciągnąć to wszystko za jednym razem.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vuq
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 11.07.2005

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


OK, ale to wyjdzie na coś podobnego jak teraz. Te zapytania pracują w starym skrypcie PHP 5.2 + MySQL z mysql_query, ktora już dawno jest deprecated, stąd są też tam stare rozwiązania. Skrypt generuje mega dużo zapytań i troszkę zmula. Chodzi mi o zmniejszenie ilości zapytań i ewentualne przyspieszanie działania z tego powodu.

W kodzie wygląda to np tak:

$z4 = "SELECT pozycja FROM pozycje WHERE id_slowa=$id_slowa ORDER BY data DESC LIMIT 1,1";
$q4 = mquery( $z4 ) or die( mysql_error() );
$w4 = mysql_fetch_array( $q4 );

$pozycja_poprzednia = $w4['pozycja'];

$z5 = "SELECT pozycja FROM pozycje WHERE id_slowa=$id_slowa AND data < DATE_SUB( NOW() , INTERVAL 1 WEEK ) ORDER BY data DESC LIMIT 1";
$q5 = mquery( $z5 ) or die( mysql_error() );
$w5 = mysql_fetch_array( $q5 );

$pozycja_1_tygodnie = $w5['pozycja'];

$z7 = "SELECT pozycja FROM pozycje WHERE id_slowa=$id_slowa AND data < DATE_SUB( NOW() , INTERVAL 2 WEEK ) ORDER BY data DESC LIMIT 1";
$q7 = mquery( $z7 ) or die( mysql_error() );
$w7 = mysql_fetch_array( $q7 );

i tak dalej.

Dla wielu słów i wielu dat mam mega dużo zapytań, więc jeśli istnieje możliwość, chciałbym wydobyć je jednym zapytaniem, lub jak najmniejszą ilością zapytań.

Dzięki.
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: 24.12.2025 - 17:01