Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Union i Oder by
shycat
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 1
Dołączył: 25.02.2008

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


Witam, mam taki kod:

  1. $zap=mysql_query("
  2.  
  3. (SELECT * FROM `baza_danych` WHERE (`online` > ".$time2.") AND `id` NOT LIKE '".$id."' AND `pay_typ` LIKE '3' AND `pay_do` > '".$time."')
  4.  
  5. UNION
  6.  
  7. (SELECT * FROM `baza_danych` WHERE (`online` > ".$time2.") AND `id` NOT LIKE '".$id."' ORDER BY `ostatnie_logowanie`)
  8.  
  9. LIMIT ".(($s*20)-20).",20"
  10.  
  11. );



No i mam problem z Order by w drugiej czesci, poniewaz one po prostu nie dziala... wyniki sa "pomieszane" tak jakby w ogole tego Order by nie bylo. Jak moge naprawic ten blad?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Tak, może to mieć wpływ na szybkość działania. Nie jestem pewien, ale optymalizator raczej nie da rady zamienić takiego LIKE-a na normalne porównanie, bo obie konstrukcje jednak działają nieco inaczej (tutaj więcej.

Co do poprawności... masz rację. Powinno być:
  1. ... ORDER BY (pay_typ = 3 AND pay_do > :time), ostatnie_logowanie ...
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: 10.10.2025 - 22:35