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
Indeo
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


  1. SELECT id,
  2. case
  3. when id=4 then -99999
  4. when id=8 then -99998
  5. else id
  6. end AS x
  7. FROM ludzie ORDER BY x ASC



i już sie nie wcisną (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Mój sposób pozwala na budowanie bardzo złożonej topologii warunków bo przecież mogłoby być:

....
when kobieta='yes' and wiek between (18 and 60) then 'kobieta_pracujaca'
when userid=1 then 'jakis_user'
else costam
....
czyli kolejne warianty mogą składać sie z dowonych wyrażeń i w momencie natrafienia na pierwsze spełnione (prawdziwe) porównanie mechanizm pomija kolejne porównania i przechodzi do porównywania kolejnego rekordu. Co więcej - można sobie po takiej zdefiniowanej zmiennej grupować, sumować itd
A w sort orderingu byłoby to trudne do zapisania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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 - 14:06