Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Równoległe sortowanie dwóch kolumn
JankesZiom
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.01.2010
Skąd: Gdańsk

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


W bazie mam 3 tabele: wykonawca, zespół i płyta.
W tabeli płyta jest zarówno id wykonawcy i zespołu w zależności od rodzaju produkcji, więc jedno z tych pół zawsze jest puste.

  1. SELECT p.tytul, w.imie, z.nazwa FROM plyta p
  2. LEFT JOIN wykonawca w ON p.wykonawca_id=w.wykonawca_id
  3. LEFT JOIN zespol z ON p.zespol_id=z.zespol_id
  4. ORDER BY questionmark.gif?


Jak (czy w ogóle da się) wykonać sortowanie zarówno po nazwie zepołu jak i imieniu wykonawcy? Tzn. jeżeli nie ma wykonawcy to sprawdz czy jest zespół i na odwrót.


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

Rapten.pl - RAPu Tęga ENcyklopedia
jankes.com.pl
Go to the top of the page
+Quote Post
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.
Po "ORDER BY" możesz podać dwie i więcej kolumn rozdzielonych przecinkami.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
JankesZiom
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.01.2010
Skąd: Gdańsk

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


Tak, ale wtedy pierwszeństwo będzie wg kolejność, czyli jeżeli dam: z.nazwa ASC, w.imie ASC wyjdzie:

|-wyk-|-zes-
1| a |------
2| c |------
3| d |------
4| g |------
5|------| b
6|------| e
7|------| f

Natomiast mi chodzi o:

|-wyk-|-zes-
1| a |--------
2|------| b
3| c |--------
4| d |--------
5|------| e
6|------| f
7| g |-------

Ten post edytował JankesZiom 7.04.2012, 23:14:27


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

Rapten.pl - RAPu Tęga ENcyklopedia
jankes.com.pl
Go to the top of the page
+Quote Post
jaslanin
post
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


Myślę że bardziej sensowne będzie:

  1. SELECT p.tytul, COALESCE(w.imie, z.nazwa) nazwa FROM plyta p
  2. LEFT JOIN wykonawca w ON p.wykonawca_id=w.wykonawca_id
  3. LEFT JOIN zespol z ON p.zespol_id=z.zespol_id
  4. ORDER BY nazwa


Niemniej jednak możesz i tak:

  1. SELECT p.tytul, w.imie, z.nazwa FROM plyta p
  2. LEFT JOIN wykonawca w ON p.wykonawca_id=w.wykonawca_id
  3. LEFT JOIN zespol z ON p.zespol_id=z.zespol_id
  4. ORDER BY IF (ISNULL(w.imie), z.nazwa, w.imie)


Ten post edytował jaslanin 8.04.2012, 09:50:46


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 23:59