Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlanie kilku wierszy za pomocą jednej kwerendy
dragonsokol
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 2
Dołączył: 23.06.2008

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


Witam. Posiadam następujący problem - wyszukuje pewne produkty za pomocą kwerendy
  1. SELECT * FROM `products` WHERE `id` IN (SELECT `promoted` FROM `promoted` WHERE `id` = 1);

`promoted` zapisuje w formacie zgodnym z formatem IN, tj. np. 10,13,15,16,17,18,20,21 .
Do niedawna działało wspaniale, niestety po którejś z aktualizacji MySQL taki sposób przestał działać i wyświetla się tylko jeden produkt (pierwszy w `promoted` czyli w przykładzie produkt o ID 10).
Co robić by uniknąć tego problemu i nie dzielić tego na dwie kwerendy i explode w PHP?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


samo zapytanie w sobie wyglada na prawidlowe (nieoptymalne, ale prawidlowe)

sprawdz co zwraca ci subquery :
  1. SELECT `promoted` FROM `promoted` WHERE `id` = 1
po mojemu powinien zwraca ci jeden rekord, wiec i glowne zapytanie zwraca ci jeden rekord.

odpowiadajac na pytanie, czy da sie uniknac dzielenia na kilka etapow,: da sie ale po co? w zaleznosci od maszyny, na jakiej masz serwer - mozesz uzyskac wzrost wydajnosci

podzapytania w mysql spowalniaja, i to znacznie.

jesli bardzo nie chcesz - mozesz wykorzystac polecenie
  1. prepare
<< doczytaj sobie w manualu.

poza tym, w php to raczej implode niz explode (IMG:style_emoticons/default/wink.gif)

j.
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: 26.09.2025 - 10:35