FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Jag har två tabeller
--------------------------------------- En produkttabell TabellA (i verkligheten avsevärt många fler kolumner) Kod:
select * from TabellA +----+-------+ | Id | Namn | +----+-------+ | 1 | Saab | | 2 | Volvo | | 3 | Audi | | 4 | Lexus | +----+-------+ Kod:
select * from TabellB +----+-----+------+------------+ | Id | PId | Pris | Datum | +----+-----+------+------------+ | 1 | 1 | 500 | 2011-12-21 | | 2 | 2 | 600 | 2011-12-21 | | 3 | 3 | 1000 | 2011-12-07 | | 4 | 3 | 1800 | 2011-12-13 | | 5 | 3 | 1500 | 2011-12-18 | | 6 | 4 | 320 | 0201-12-01 | +----+-----+------+------------+ Priserna förändras över tid och jag vill spara all historik. Här kan vi se att priset på produkt ändrats tre gånger i dec Kod:
select PId,Namn,Pris,Datum from TabellA left join TabellB on TabellB.PId = TabellA.Id +------+-------+------+------------+ | PId | Namn | Pris | Datum | +------+-------+------+------------+ | 1 | Saab | 500 | 2011-12-21 | | 2 | Volvo | 600 | 2011-12-21 | | 3 | Audi | 1000 | 2011-12-07 | | 3 | Audi | 1800 | 2011-12-13 | | 3 | Audi | 1500 | 2011-12-18 | | 4 | Lexus | 320 | 0201-12-01 | +------+-------+------+------------+ Kod:
select PId,Namn,Pris,Datum from TabellA left join TabellB on TabellB.PId = TabellA.Id group by PId; +------+-------+------+------------+ | PId | Namn | Pris | Datum | +------+-------+------+------------+ | 1 | Saab | 500 | 2011-12-21 | | 2 | Volvo | 600 | 2011-12-21 | | 3 | Audi | 1000 | 2011-12-07 | | 4 | Lexus | 320 | 0201-12-01 | +------+-------+------+------------+ Vad skriver jag för att det alltid ska välja senast pris? Alltså ett sånt här resultat. Kod:
+------+-------+------+------------+ | PId | Namn | Pris | Datum | +------+-------+------+------------+ | 1 | Saab | 500 | 2011-12-21 | | 2 | Volvo | 600 | 2011-12-21 | | 3 | Audi | 1500 | 2011-12-18 | <-- detta | 4 | Lexus | 320 | 0201-12-01 | +------+-------+------+------------+ |
|||
![]() |
![]() |
|
|