Ich möchte alle Einträge aus einer Tabelle auswählen, wo MEMBER_STATUS = 2. Dieser Status kann jedoch im Laufe der Zeit ändern. Jedes Mal, wenn sich der Mitgliedsstatus ändert, wird der alte Eintrag in einer anderen Tabelle namens ADRESS_history gespeichert.Wo Bedingung basierend auf Timestamp
ADDRESS (each ID only exists once)
ID | FIRSTNAME | LASTNAME | MEMBER_STATUS | DTM
1 | Tom | Mueller | 2 | 2016-04-02
2 | John | Doe | 2 | 2016-03-02
3 | David | Allen | 4 | 2016-04-04
4 | Neil | Fiore | 8 | 2016-04-04
ADDRESS_history (IDs can have multiple entries)
ID | FIRSTNAME | LASTNAME | MEMBER_STATUS | DTM
2 | John | Doe | 2 | 2012-02-02
3 | David | Allen | 2 | 2013-03-01
1 | Tom | Mueller | 1 | 2015-03-30
2 | John | Doe | 2 | 2015-08-22
1 | Tom | Mueller | 4 | 2012-02-02
1 | Tom | Mueller | 3 | 2013-02-02
Wenn die letzte Änderung in der Adresstabelle stattfindet, nach 2016.04.01, würde Ich mag den Mitgliedsstatus des letzten Eintrags für den Benutzer in der Tabelle ADDRESS_history verwenden. Wenn die letzte Änderung in der Tabelle ADDRESS vor 2016-04-01 stattgefunden hat, möchte ich den Mitgliedsstatus des Eintrags aus der Tabelle ADDRESS verwenden. Wie kann diese Abfrage geändert werden, um dies widerzuspiegeln?
select *
from ADDRESS a
join ADDRESS_history using (ID)
MEMBER_STATUS = 2
Das Ergebnis sollte von hier sein
ID | FIRSTNAME | LASTNAME | MEMBER_STATUS | DTM
1 | Tom | Mueller | 1 | 2015-03-30
2 | John | Doe | 2 | 2016-03-02
3 | David | Allen | 2 | 2013-03-01