FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Flitig postare
|
Om man har två sql tabeller, tabell A som innehåller två kolumner: id, namn
och tabell B som innehåller tre kolumner: id, tabella_id, nummer Nu vill jag hämta ut alla värden från tabell A och joina in tabell B, men i tabell B så finns det ibland ETT värde där tabell A:s id matchar tabell B:s tabella_id, och ibland FLERA värden. Exempel, tabell A: id, namn 1, adam 2, kalle 3, bertil Exempel, tabell B: id, tabella_id, nummer 1, 1, 1 2, 1, 3 3, 2, 4 4, 3, 1 5, 3, 2 6, 3, 3 7, 3, 4 Hur ska min sql fråga se ut om jag vill ha ut en lista med värden där tabell A.id matchar tabell B.tabella_id i en viss ordning? Låt oss säga att jag vill ha ut tabell B enligt nummerföljden 2,3,1,4 dvs OM det finns ett värde i tabell B med nummer 2 där tabell A.id matchar tabell B.tabella_id så är det den raden i tabell B jag vill ha, men om det INTE finns ett värde med nummer 2 så vill jag istället ha värde 3, finns ej värde 3 så värde 1, annars värde 4. * Går det att skriva en mysql-förfrågning på det viset? * Går det att få till i både mysql 4.x och mysql 5.x? * Eller om det ej går, ge gärna förslag på hur på smidigast sätt får ut "bästa möjliga" sql, för att därefter loopa sig igenom värdena i php och få ut dom enligt ovanstående... Det är dock inget bra val då det ibland handlar om mängder med rader =/ Jag ANTAR att det kräver if() else() alternativt en case/switch-sats i sql-förfrågningen, något jag själv ännu ej satt mig in i. Fiktiv sql-förfrågning: SELECT * FROM tabellA If(tabellB.nummer == 2) then INNER JOIN tabellB ON ((tabellA.Id = tabellB.tabella_id) AND (tabellB.nummer = 2)) elseIf(tabellB.nummer == 3) then INNER JOIN tabellB ON ((tabellA.Id = tabellB.tabella_id) AND (tabellB.nummer = 3)) elseIf(tabellB.nummer == 1) then INNER JOIN tabellB ON ((tabellA.Id = tabellB.tabella_id) AND (tabellB.nummer = 1)) elseIf(tabellB.nummer == 4) then INNER JOIN tabellB ON ((tabellA.Id = tabellB.tabella_id) AND (tabellB.nummer = 4)) Av ovanstående exempel på vad tabellA och tabellB innehåller för värden så hade jag alltså önskat få ut följande, om vi kör enligt nummerföljden 2,3,1,4: tabellA.id, tabellA.namn, tabellB.id, tabellB.nummer 1, adam, 1, 3 2, kalle, 3, 4 3, bertil, 5, 2 Hoppas ni förstår hur jag menar med min fråga =) |
|||
![]() |
![]() |
Ämnesverktyg | |
Visningsalternativ | |
|
|