Avatar billede mishrah Nybegynder
11. juli 2007 - 11:06 Der er 7 kommentarer og
2 løsninger

SQL order by problem

Hejsa,
jeg har en tabel med en masse ordrer i, og denne tabel vil jeg gerne kunne sortere efter bl.a. kundens navn.
I Ordretabellen har jeg blot et kunde id der refererer til en kundetabel, og det giver derfor ikke meget mening at "ORDER BY kunde_id".

Jeg vil istedet order mine ordrer efter kundens navn, som jo står i en anden tabel.

Så jeg skal bruge noget i stil med :

SELECT * FROM ordrer ORDER by (navn fra kundetabel, udfra kunde_id)

Håber det giver mening - 200 point for et hurtigt svar :)
På forhånd tak!
Avatar billede michael_stim Ekspert
11. juli 2007 - 11:17 #1
SELECT * FROM ordrer o, kundetabel k ORDER by k.navn, o.kunde_id

Noget a lá dette?
Avatar billede pgroen Nybegynder
11. juli 2007 - 11:24 #2
SELECT o.*
  FROM ordrer o, kundetabel k
WHERE o.kunde_id = k.kunde_id
ORDER BY k.navn
Avatar billede mishrah Nybegynder
11. juli 2007 - 11:34 #3
Præcis som dette :) Jeg har dog lidt problemer med at få det til at virke i praksis... Min SQL ser sådan her ud:

SELECT DISTINCT ordre_nummer,afgang_timestamp FROM Ordrer WHERE site = 'x' AND omraade = 'y' AND status = 'aktiv' ORDER by ??? ASC

Og jeg prøver så at omskrive den efter dit eksempel til:

SELECT DISTINCT ordre_nummer,afgang_timestamp FROM Ordrer o, efternavn FROM Kunder k WHERE o.site = 'x' AND o.omraade = 'y' AND o.status = 'aktiv' ORDER by k.efternavn ASC

Men det virker ikke :( Nogen idéer?
PS: Hvis du lægger et svar, ska du nok få pointene - du svarede jo trods alt - bare mig der ikke er SQL haj nok :)
Avatar billede mishrah Nybegynder
11. juli 2007 - 11:37 #4
>>pgroen - det er ikke helt det jeg leder efter - tror jeg :) Jeg har lidt svært ved at se hvad den gør...
Avatar billede michael_stim Ekspert
11. juli 2007 - 11:38 #5
SELECT DISTINCT o.ordre_nummer,o.afgang_timestamp FROM Ordrer o, Kunder k WHERE o.site = 'x' AND o.omraade = 'y' AND o.status = 'aktiv' ORDER by k.efternavn ASC

Og så skal du fortælle hvad referencen er. F ex AND o.ordre_nummer = k.ordre_nummer
Avatar billede michael_stim Ekspert
11. juli 2007 - 11:40 #6
Og jeg samler ikke på point, så det er bare at tage dem selv ;o)
Avatar billede teepee Nybegynder
11. juli 2007 - 11:42 #7
Tror du ikke bare at du skal sortere efter noget mere:
SELECT DISTINCT ordre_nummer,afgang_timestamp
FROM Ordrer o, Kunder k
WHERE o.kunde_id = k.kunde_id
AND o.site = 'x'
AND o.omraade = 'y'
AND o.status = 'aktiv'
ORDER by k.efternavn ASC, k.kunde_id, o.ordre_nummer
Avatar billede teepee Nybegynder
11. juli 2007 - 11:43 #8
og så manglede du en join af de to tabeller (where o.kunde_id=k.kunde_id)
iøvrigt glemte jeg selv efternavnet i sql'en...
SELECT (DISTINCT o.ordre_nummer), k.efternavn, o.afgang_timestamp
FROM Ordrer o, Kunder k
WHERE o.kunde_id = k.kunde_id
AND o.site = 'x'
AND o.omraade = 'y'
AND o.status = 'aktiv'
ORDER by k.efternavn ASC, k.kunde_id, o.ordre_nummer
Avatar billede mishrah Nybegynder
12. juli 2007 - 20:37 #9
Takker begge to - det var helt perfekt! :)
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