![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A jakie to wg. ciebie jest sortowanie jak się nalezy? Null na koncu? Bo dla mnie akurat tak jak masz teraz (null na początku) jest ok
![]() No ale masz: http://nospor.pl/mysql-faq.html#faq-5 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() 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
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 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Dziękuje wookieb, właśnie o to mi chodziło. A do czego to potrzebuje? No to mam sobie bazę obiektów która zawiera różne pola, między innymi poziom. Obiekty wyświetlane są z orderem po poziomie oraz id. Poziom określa miejsce w którym będzie się wyświetlały obiekty na liście, jeśli np nowy obiekt ma poziom 3 a został dodany po obiektach z poziomem 2 to ma być wyżej na liście. (poziomnr) ma za zadanie dodatkowo określać kolejność wyświetlania się obiektów w danym poziomie, czyli: najpierw obiekty z poziomem 3 gdzie najpierw obiekt z poziomnr 1 nastepnie poziomnr 2 etc... następnie obiekty z poziomem nr 2 gdzie ..... etc Problem tkwił w tym że tabelka już istniała i musiałem dodać kolumnę z poziomnr. Pozdrawiam Ten post edytował fander 4.08.2010, 11:57:55 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:59 |