Avatar billede Slettet bruger
04. april 2009 - 16:57 Der er 2 kommentarer og
1 løsning

Hent status fra anden tabel

Hej

Jeg har tre tabeller.

Tabel 1 Ordren (order) - Indhold:
id
name
mv...

Tabel 2 Ordre status (order_actions) - Indhold:
id
order_id
action_id

Tabel 3 Status oplysninger (actions) - Indhold:
id
name
order

Tabel 2 indeholder ordrens status fx:
1, 1, 1
2, 1, 2
3, 1, 3

Tabel 3 indeholder informationer omkring de forskellige ordre status fx:
1, Tilbud oprettet, false
2, Ordre oprettet, true
3, Email sendt til kunden, NULL

Altså en ordre har en række status oplysninger (tabel 2) og disse status oplysninger er uddybet med titel/navn i tabel 3. I tabel 3 er der også et ENUM('true','false') som angiver status på ordre. Hvis der IKKE optræder et 'true' på noget tidspunkt i ordre historikken er det ikke en ordre endnu, men blot et tilbud. NULL er også en mulighed, men det betyder blot at denne status kan bruges både på tilbud og ordre, altså den bestemmer for så vidt ikke hvad status er.

Jeg skal bruge en sætning som fortæller om der er tale om en ordre eller et tilbud. Jeg har lavet noget ala:

SELECT o.*, IF(oa.order IS NULL, 'false', oa.order) AS order_status FROM ((orders o LEFT JOIN order_actions oa ON oa.order_id = o.id) LEFT JOIN actions a ON a.id = oa.action_id) ORDER BY oa.order ASC, LIMIT 0,1

Ovenstående virker ikke optimalt, da NULL kommer før 'true' ved ASC sortering og 'false' kommer først ved DESC sortering (naturligvis :)). Men jeg skal altså have et output som fortæller om det er et tilbud eller ordre. Hvis 'true' på noget tidspunkt optræder i ordre historikken er det en ordre, hvis ikke er det blot et tilbud.

Håber det giver mening...

På forhånd tak...
Avatar billede Slettet bruger
06. april 2009 - 16:42 #1
Er der ikke nogen der kan hjælpe?!? Er det en mulighed at lave en count hvor alle ordre er true?

Har netop hævet point...
Avatar billede Slettet bruger
06. april 2009 - 16:43 #2
... eller nej, der var jeg for hurtig, for det kan man tilsyneladende ikke mere?!?
Avatar billede Slettet bruger
07. april 2009 - 15:29 #3
Har selv klaret den med count...
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