Avatar billede mishrah Nybegynder
11. oktober 2012 - 21:29 Der er 11 kommentarer og
2 løsninger

Sortering og gruppering af udtræk

Hej gutter,
Jeg har brug for at lave et udtræk af en person-tabel ud fra en række id'er. Udtrækket vil jeg gerne have grupperet efter job, således at der sorteres på job, derefter navn.

Tabellen ser ud som følger:

Personer:
id (int autoincrement primary-key)
navn (varchar(64))
job (varchar(64))

Id'erne som skal trækkes ud, har jeg i en kommasepareret tekst-streng - Fx: "101,245,2468,2544,2697,4458,4868,5124".

Jeg kunne selvfølgelig lave et udtræk a'la:
"SELECT * FROM Personer WHERE id=101 OR id=245 OR id=2468 OR id=2544 ....... ORDER by job,navn"

Men kan det ikke gøres smartere?
Der må være nogen derude der lige kan gennemskue den :)

På forhånd tak,
Med venlig hilsen
Martin
Avatar billede Syska Mester
11. oktober 2012 - 21:45 #1
WHERE ID IN ( 10, 20 , 30 , 40)
Avatar billede arne_v Ekspert
11. oktober 2012 - 21:45 #2
SELECT * FROM personer WHERE id IN (101,245,2468,2544,2697,4458,4868,5124)
Avatar billede mishrah Nybegynder
11. oktober 2012 - 22:01 #3
Mange tak!
Den var tæt ;) Kan smide 100 point til Jer hver hvis i smider svar :)

Som krølle på spørgsmålet, er det muligt når man sorterer efter job, at angive at de personer hvor job = NULL, vises sidst istedet for først? Resten af job's skal sorteres alfabetisk - dvs. først job der starter med a, så b osv og til sidst dem hvor job = null.

Kan det lade sig gøre?
Avatar billede Syska Mester
11. oktober 2012 - 22:22 #4
Man kan vel:

ISNULL(job, 'value som altid vil være sidst i alfabetet'), navn
Avatar billede arne_v Ekspert
11. oktober 2012 - 22:23 #5
... ORDER BY ISNULL(job, 'ZZZZZZZZZZZZZZZZZZZZ')
Avatar billede arne_v Ekspert
11. oktober 2012 - 22:23 #6
svar
Avatar billede arne_v Ekspert
11. oktober 2012 - 22:24 #7
#5 forudsaetter engelsk alfabet, dansk er lidt anderledes og kinesisk .........................
Avatar billede Syska Mester
11. oktober 2012 - 22:27 #8
Beat you twice today arne :-)

Altid noget det er samme svar vi giver.
Avatar billede arne_v Ekspert
11. oktober 2012 - 22:29 #9
Jeg er nok ved at blive gammel .....

:-)
Avatar billede Syska Mester
11. oktober 2012 - 22:55 #10
Læste lige lidt af din: .NET 4.5 og C# 5.0

C# går fra 4.0 til 5.0
.NET library går fra 4.0 til 5.0
.NET runtime forbliver på 4.0


.NET 4.0 går da til .NET 4.5 nu eller tager jeg helt fejl her?
Avatar billede arne_v Ekspert
11. oktober 2012 - 23:45 #11
library gaar fra 4.0 til 4.5

runtime forbliver paa 4.0

jeg retter flux library
Avatar billede mishrah Nybegynder
13. oktober 2012 - 14:36 #12
Lige et tillæg:

Kan det passe at "ORDER BY ISNULL(job, 'ZZZZZZZZZZZZZZZZZZZZ')" ikke virker på MySQL?

Det virker fint på MSSQL, men sidder lige og tester migration til MySQL og der får det queryen til at hænge :)
Avatar billede mishrah Nybegynder
13. oktober 2012 - 14:40 #13
Hov, den beklager jeg...
Lidt hurtig google fortæller at IsNULL = IfNULL i MySQL.
Endnu engang tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester