Visa ett inlägg
Oläst 2011-12-23, 01:34 #1
aelanders avatar
aelander aelander är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 146
aelander aelander är inte uppkopplad
Medlem
aelanders avatar
 
Reg.datum: Dec 2004
Inlägg: 146
Standard mySQL - join eller group problem

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 |
+----+-------+
och en TabellB med priser
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 |
+------+-------+------+------------+
aelander är inte uppkopplad   Svara med citatSvara med citat