Toon posts:

[MySQL] ORDER specifiek

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi, Ik heb zeg maar een tabelletje:
code:
1
2
3
4
5
6
7
8
9
10
NR| LETTER
----------
1 | a
2 | b
3 | b
4 | b
5 | q
6 | q
7 | b
8 | a

En nu wil ik via een SELECT nr, letter FROM tabel ORDER BY ?? dat ik eerst alles met de B bovenaan krijg (en dan op cijfer geordend, maar dat is niet echt het probleem :). Na die B moet het zowieso op cijfers. Ik wil dus het volgende eruit krijgen:
code:
1
2
3
4
5
6
7
8
9
10
NR | LETTER
-----------
2 | b
3 | b
4 | b
7 | b
1 | a
5 | q
6 | 8
8 | a

Hoe de *** krijg ik dit voor elkaar? Is dit uberhaupt mogelijk met enkel een MySQL query? ('t is in een PHP script. Wellicht kan het via PHP opgelost worden?)

Tnx

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09
Het kan dus wel, maar in PHP zou het zo kunnen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function compare($arg1, $arg2)
{
    if($arg1['letter'] == $arg2['letter']){
        // Hetzelfde, dus geen verandering in volgorde.
        return 0;
    }
    if($arg1['letter'] == 'b'){
        // Deze is hoger geplaatst dan arg2.
        return 1;
    }
    if($arg2['letter'] == 'b'){
        // Deze is hoger geplaatst dan arg1.
        return -1;
    }
    // Sorteren op nummer
    return ($arg1['id'] < $arg2['id']) ? -1 : 1;
}

$a = usort($a, 'compare');

Ongetest, maar ik denk dat het wel werkt.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

SELECT nr, letter
FROM tabel
ORDER BY (letter='b') desc, nr asc

Today's subliminal thought is:


  • xtra
  • Registratie: November 2001
  • Laatst online: 31-08 14:51
Je wilt halverwege de query op een ander veld gaan sorteren. Dat lijkt me niet mogelijk.

Ondersteunt MySql ook UNION? In dat geval kun je een query maken voor alles met B en een query voor alles zonder B.

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09
Op zondag 18 november 2001 14:25 schreef xtra het volgende:
Je wilt halverwege de query op een ander veld gaan sorteren. Dat lijkt me niet mogelijk.

Ondersteunt MySql ook UNION? In dat geval kun je een query maken voor alles met B en een query voor alles zonder B.
Alleen de 4.0 Alpha ondersteunt UNION, dus dat lijkt me nog niet echt handig.

Maar dat maakt niet uit, want het volgende werkt, weer wat geleerd:
Op zondag 18 november 2001 14:10 schreef Annie het volgende:
SELECT nr, letter
FROM tabel
ORDER BY (letter='b') desc, nr asc

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Topicstarter
Yup, bovenstaande werkt! Tnx, en idd weer wat geleerd :)
Pagina: 1