Avatar billede Slettet bruger
07. marts 2009 - 13:41 Der er 1 løsning

Order by enum og group by

Hej

Jeg har tre databaser som jeg left joiner i en query. Første database indeholder en række oplysninger om en given ordre (navn, adresse mv.). Database to indeholder en række statusoplysninger. I database to er der mange linier pr. ordre. Database tre indeholder oplysninger om hver eneste statusoplsyning.

Kort illustreret:

DB1 (orders):
id, navn, adresse, postnr mv.

DB2 (order_status):
id, order_id, status_id, dato

DB3 (order_status_description):
id, beskrivelse, ordre (enum: true, false)

Den query som jeg skal bruge, skal kunne vise alle ordre og tilmed fortælle hvad den seneste status er.

Det tricky er, at jeg skal bruge den information fra DB3 som hedder "ordre", som fortæller om det er en ordre eller et tilbud. Dette går således galt.

Men query er pt.:

SELECT *, IF(osd.status IS NULL, 'false', aa.order) AS order_status FROM ((orders o LEFT JOIN order_status os ON o.id = os.order_id) LEFT JOIN order_status_description osd ON os.status_id = osd.id) GROUP BY o.id ORDER BY o.id DESC, osd.order ASC;

Ovenstående kan jeg ikke få til at virke, for den skriver 'false' i 'order_status' uanset om der er en linie i 'order_status_description' der indeholder linen 'order = true'. Altså jeg skal frem til at, hvis der er så meget som en linie i den tredje database, 'order_status_description', der indeholder 'order = true' så skal 'order_status' blive til 'true'.

Grunden til at jeg har lavet en IF NULL ved 'order status', er at der er i visse tilfælde ikke står noget i 'order_status' omkring ordren.

Jeg håber dette giver mening :)
Avatar billede Slettet bruger
07. marts 2009 - 16:44 #1
Har selv lavet en løsning med subselect af DB2 heri en LEFT JOIN af DB3, hvor der sorteres efter 'order'
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