Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL Sortowanie
fander
post
Post #1





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


Witam

Mam pewien pytanko mianowicie posiadam tabelę z danymi jej struktura wygląda następująco

Kod
tabelka(
  id INTEGER,
  nazwa VARCHAR(200),
  poziom INTEGER NOT NULL,
  poziomnr INTEGER  NULL,
);


dane w tabelce wyglądają następująco
Kod
id | nazwa   | poziom | poziomnr
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1 | a           | 3          | 3          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
2 | b           | 3          | 1          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
3 | a           | 3          | 2          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
4 | b           | 2          | null          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
5 | a           | 2          | 1          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
6 | b           | 3          | 3          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
7 | a           | 2          | 4          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
8 | b           | 1          | null          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
9 | a           | 2          | 2          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
10 | b         | 1          | null          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
11 | a         | 1          | 2          
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
12 | b         | 1          | null          
.
.
.
.
itd


zapytanie pobierające dane wygląda następująco

SELECT * FROM tabelka ORDER BY poziom DESC, poziomnr ASC

No i tu mam problem bo poziomnr posiada pola z wartością null, czyli najpierw wyświetlają mi się rekordy z null a następnie zachodzi sortowanie po liczbach.
Czy istnieje jakiś sposób aby pobrać w 1 zapytaniu elementy posortowane tak jak się należy.

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





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Rozumiem, że te z null chcesz mieć na końcu czy w ogóle ich nie wyświetlać? Ponieważ praktycznie wartości z null są sortowane prawidłowo.
Jeżeli chcesz mieć na końcu mozesz zrobić coś takiego
  1. SELECT * FROM tabelka ORDER BY poziom DESC, IF(poziomnr IS NULL, 100000, poziomnr) ASC

Jednakże nie będzie to zbyt wydajne przy dużych tabelach (sortowanie nie będzie wykorzystywało indeksu). Fajnie by było gdybyś opisał, co ta tabela ma przechowywać i co dokładnie chcesz przez to osiągnąć.

Ten post edytował wookieb 4.08.2010, 09:13:39
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: 15.10.2025 - 00:54