Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie wg konkretnych wartości, Czy jest lepszy sposób niz UNION?
MistrzHTML
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 20.10.2006

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


Witam.

Załóżmy, że mamy prościutką tabelę danych przechowującą ludzi, każdy z unikalnym numerem ID.

Załóżmy dodatkowo, że tabela ta ma wiele rekordów. Chcemy posortować ją wg dowolnej kolejności - brzmi to dziwnie, ale takie rozwiązanie jest mi potrzebne - np. wg numerów: 6,8,2,9,1,100,200,542,142, a dalej już np. rosnąco.

Czy jest na to jakieś bardziej elegancki sposób niż tworzenie ogromnego zapytania z wieloma słówkami UNION? Dla mnie nie jest to problemem wygenerować takowe dynamicznie, ale czy jest prostszy, może mniej obciążający bazę sposób na takowe zapytanie?

Ten post edytował MistrzHTML 12.07.2007, 21:31:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MistrzHTML
post
Post #2





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 20.10.2006

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


Dobry pomysł, ale zapytanie nie zadziała do końca tak jak powinno. Jeżeli przypisze tej zmiennej konkretne wartości dla wybranych id, a pozostałe wypełni samym id, to oryginalne numery id, które miały zostać wybrane po tych konkretnych wartościach, "wepchną się" między nie. Jeżeli na początku chcę mieć rekord o numerze 7, a potem 4 zakładając, że mam w bazie oryginalne numery od 1 wzwyż, to otrzymam taki wynik:

7 (x=1), 1 (x=1), 4 (x=2), 2 (x=2) lub 1,7,4,2 lub 7,1,2,4 lub 1,7,4,2 - zależy od kolejności wpisów w bazie.

Ja chciałbym, by rekordy z numerami 7 i 4 wskoczyły przed wszystkie inne.

----------------------------------------------------------------------------------------------------

02:01

Właśnie odkryłem, że działa zapis

  1. SELECT imie,nazwisko FROM ludzie ORDER BY nr=7,nr=4,nr ASC


(IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

Co dziwne, wyświetla rekordy o numerach 4 i 7 na samym dole wyników (7 to ostatni zwrócony rekord). Wyniki w pożądanej kolejności zwraca zapytanie:

  1. SELECT imie,nazwisko FROM ludzie ORDER BY nr=7 DESC,nr=4 DESC,nr ASC


Dziwne, ale prawdziwe (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował MistrzHTML 13.07.2007, 01:08:54
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: 4.10.2025 - 00:57