Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] kilkukrotne sortowanie
szczypior
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Cześć

Chcę zrobić menu rozwijane do którego nazwy kategorii i podkategorii pobierane są z bazy. Kategorie mają być posortowane alfabetycznie i podkategorie też, czyli

A kategoria
- A podkat
- B podkat
- Z podkat
B kategoria
- A podkat2
- B podkat2
- Z podkat2
itd

Tabela z kategoriami wygląda tak:

| id | nazwa | gl |

id - unikalne id kategorii
gl - jest dany rekord jest "kategorią" to gl zawiera wartość taką jak id (równie dobrze możnaby zrobić nulla jeśli to coś ułatwi), jeśli jest podkategorią to gl zawiera id kategorii dla której jest podkategorią

Problem jest w posortowaniu tego odpowiednio.

Gdy posortuje
  1. SELECT * FROM kat ORDER BY gl, nazwa


to podkategorie są dobrze posortowane, ale jeśli dodam nową kategorię na literę A to znajduje się ona na końcu wszystkich kategorii (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
maciejkiner
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 7.03.2004

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


Witam

Zamiast gl potrzebujesz wyciagnac nazwe kolumny, cos w stylu:

  1. SELECT t1.*,t2.nazwa AS 'gl_nazwa' FROM kat AS 't1'
  2. JOIN kat 't2' ON t1.gl=t2.id
  3. ORDER BY gl_nazwa, nazwa


Tylko wtedy ta gl musisz pewnie przerobic na NULL. To tylko koncepcja, bo dzis mi mozg ciezko pracuje, ale powinno Cie to naprowadzic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pzdr
maciejkiner

Ten post edytował maciejkiner 2.02.2008, 17:49:10
Go to the top of the page
+Quote Post
mxm
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 9.06.2005

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


A próbowałeś komendy DESC lub ASC (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
szczypior
post
Post #4





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 5.02.2007

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


Cytat(maciejkiner @ 2.02.2008, 17:48:50 ) *
Witam

Zamiast gl potrzebujesz wyciagnac nazwe kolumny, cos w stylu:

  1. SELECT t1.*,t2.nazwa AS 'gl_nazwa' FROM kat AS 't1'
  2. JOIN kat 't2' ON t1.gl=t2.id
  3. ORDER BY gl_nazwa, nazwa


Tylko wtedy ta gl musisz pewnie przerobic na NULL. To tylko koncepcja, bo dzis mi mozg ciezko pracuje, ale powinno Cie to naprowadzic (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pzdr
maciejkiner

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

@ mxm - problem był trochę bardziej złożony

Ten post edytował szczypior 2.02.2008, 20:09:18
Go to the top of the page
+Quote Post

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: 22.08.2025 - 23:41