Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[SQL] Sorteren op opgegeven inhoud veld

Pagina: 1
Acties:

  • Telim Tor
  • Registratie: Maart 2004
  • Laatst online: 31-10-2008
Ik heb een tabel als volgt:
|idx|naam|bedrijf|
|1|Pieter|Bedrijf A|
|2|Jan|Bedrijf A|
|3|Henk|Bedrijf B|
|4|Jan|Bedrijf C|

Nu wil ik een query als:

SELECT * FROM tabel ORDER BY bedrijf="Bedrijf B", bedrijf="Bedrijf A", bedrijf="bedrijf C", naam

Deze query zou me het volgende moeten geven

|3|Henk|Bedrijf B|
|2|Jan|Bedrijf A|
|1|Pieter|Bedrijf A|
|4|Jan|Bedrijf C|

Mijn query werkt niet (lijkt de resultaten in omgekeerde volgorde te geven). Iemand een alternatief?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SQL:
1
ORDER BY bedrijf="Bedrijf B", bedrijf="Bedrijf A", bedrijf="bedrijf C"

:? Dat gaat natuurlijk never nooit werken. Je bent bekend met de SQL syntax?
Je kunt eens naar een case...when... kijken en daarmee creatief een order (0,1,2) aan een bedrijf hangen. Hoe, dat laat ik even over aan jezelf als oefening ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 15:09
Nouja, zijn implementatie werkt wel, maar je moet bedenken dat uit een vergelijking 0 of 1 komt. En welke komt er dan eerder? Precies: 0.

Oftewel, gebruik DESC, of zet je sort-clauses in een andere volgorde.

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Is er niet gewoon ergens anders in de tabel een logisch sorteerveld? Of met een join erbij te halen?

Want ik zie hier echt geen logica in deze sortering. En zonder logica zie ik een rampentraject qua uitbreidingen. Straks komt er een bedrijf D bij, dan wil jij weer alle querys aanpassen?
Als er echt geen logische sortering is, dan zou ik alsnog een extra tabelletje erbij maken met bedrijven en een integer om de sortering aan te geven. 1 Left join en je kan het wel met standaard functies sorteren...

  • Heikanu
  • Registratie: Juni 2007
  • Laatst online: 16-11 20:49
Gomez12 schreef op zaterdag 23 augustus 2008 @ 21:17:
Is er niet gewoon ergens anders in de tabel een logisch sorteerveld?
:Y, en als deze er niet is stel ik voor er een aan te maken! ;)

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 24-08 15:17
Gomez12 schreef op zaterdag 23 augustus 2008 @ 21:17:
Is er niet gewoon ergens anders in de tabel een logisch sorteerveld? Of met een join erbij te halen?

Want ik zie hier echt geen logica in deze sortering. En zonder logica zie ik een rampentraject qua uitbreidingen. Straks komt er een bedrijf D bij, dan wil jij weer alle querys aanpassen?
Als er echt geen logische sortering is, dan zou ik alsnog een extra tabelletje erbij maken met bedrijven en een integer om de sortering aan te geven. 1 Left join en je kan het wel met standaard functies sorteren...
Ik gebruik zelf regelmatig een voorwaardelijke sortering. Het hangt van de situatie af of je dit gebruikt of een extra tabel om bedrijven gesorteerd weer te geven. Als je zeker weet dat de dataset nooit veranderd of als je query slechts eenmalig resultaat hoeft te leveren, is een voorwaardelijke sortering veel gemakkelijker. In alle andere gevallen is jouw aanpak absoluut aan te raden, omdat je de query dan niet hoeft te onderhouden.

  • trixx
  • Registratie: Maart 2001
  • Laatst online: 04-11 09:38

trixx

-CTU- SuiZide

Telim Tor schreef op zaterdag 23 augustus 2008 @ 17:28:
Ik heb een tabel als volgt:
|idx|naam|bedrijf|
|1|Pieter|Bedrijf A|
|2|Jan|Bedrijf A|
|3|Henk|Bedrijf B|
|4|Jan|Bedrijf C|

Nu wil ik een query als:

SELECT * FROM tabel ORDER BY bedrijf="Bedrijf B", bedrijf="Bedrijf A", bedrijf="bedrijf C", naam

Deze query zou me het volgende moeten geven

|3|Henk|Bedrijf B|
|2|Jan|Bedrijf A|
|1|Pieter|Bedrijf A|
|4|Jan|Bedrijf C|

Mijn query werkt niet (lijkt de resultaten in omgekeerde volgorde te geven). Iemand een alternatief?
Als de resultaten in precies de verkeerde volgorde komen te staan is de logische gedachte dat je het dus andersom moet gaan sorteren. Dit zijn basis programmeer gedachten.

Life is like a box of chocolate, it makes you sick.

Pagina: 1