Tom2: SELECT-Problem

Beitrag lesen

Hallo liebe SQLer

Ich stehe vor einem Problem, dass mich (und mein Access 97[1]) an die Grenze treibt. Zuerst einmal zum DB-Design:

Ich habe eine Tabelle (RANGE), die aktuelle Daten speichert. In einer zweiten Tabelle (JOURNAL), die genau die gleichen Felder wie RANGE und ein paar zusätzliche hat, werden alle Änderungswünsche aufgenommen. Falls ein Änderungswunsch ok ist wird der entsprechende Datensatz in RANGE angepasst und im Datensatz in JOURNAL ein Flag (DONE) gesetzt. Ein wenig vereinfacht sieht das folgendermassen aus:

RANGE {pk_id,daten}
JOURNAL {pk_id,fk_rangeid,daten,done}

Jetzt brauche ich alle aktuellen Daten und den pk_id aus JOURNAL zu den aktuellen Daten. Die aktuellen Daten in JOURNAL sind die mit gesetzem DONE-Flag und der höchsten ID.

Fehlgeschlagene Versuche:

SELECT PK_ID,FK_RANGEID,DATEN FROM JOURNAL WHERE DONE=TRUE;
schlägt fehl, weil ich alle je dagewesenen Zustände der einzelnen Datensätze in RANGE zurückbekomme.

SELECT JOURNAL.PK_ID,RANGE.PK_ID,RANGE.DATEN
FROM RANGE LEFT JOIN JOURNAL ON RANGE.PK_ID = JOURNAL.FK_RANGEID;
liefert (wie auch INNER, RIGHT-JOIN und der vorherige SQL-Query) wieder alle Datensätze aus JOURNAL zurück.

Mit GROUP BY hab ich's auch versucht, aber dabei kommt auch nichts schlaues raus.

Wie kann ich jetzt entweder die beiden Tabellen richtig verbinden oder nur die Datensätze mit der höchsten ID aus JOURNAL ausgeben? Oder gibt es eine komplett andere Lösung?

Die einzige Lösung, die ich bis jetzt gefunden habe, ist pro Datensatz ein weiteres SELECT-Statement abzuschicken. Aber dies scheint mir Definition Schwachsinn zu sein ;-).

MfG und besten Dank

Tom2

[1] Es handelt sich um eine Access 97-Datenbank, auf die per ODBC und ASP zugegriffen wird.

--
SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
ss:| zu:) ls:& fo:) de:] va:) ch:] sh:( n4:& rl:° br:> js:| ie:% fl:( mo:}