SELECT über zwei Tabellen ohne doppelte Einträge.
Guido G.
- datenbank
0 Rouven0 Guido G.
0 Vinzenz Mai
Hallo,
ich habe hier zwei Tabellen mit folgendem Aufbau:
Tabelle1:
entryID(auto_increment/Primary Key), spalte1, spalte2
Tabelle2:
entryID spalteX, datum(unix_timestamp)
In Tabelle 2 kann mehrmals die gleiche entryID stehen, ich möchte aber nur
tabelle1.entyID, tabelle1.spalte1, tabelle1.spalte2, tabelle2.spalteX und tabelle2.datum mit dem aktuellsten Datum haben.
Habe die Tabellen bereits per LEFT JOIN verknüpft, nur weiß ich nicht wie ich das ganze auf das aktuelle Datum einschränke. Erschwerend kommt dazu, dass die Werte per Schleife ausgelesen werden, und ich dadurch ja nicht einfach sagen kann
"Gib mir spalteX mit MAX(datum) WHERE entryID = ..."
Habt ihr da einen Tipp für mich?
Beispiel:
Tabelle1:
entryID = 1 spalte1 = Peter spalte2 = Meier
entryID = 2 spalte1 = Jan spalte2 = Schmidt
Tabelle2:
entryID = 1 spalteX = Hamburg datum = 1244231709
entryID = 2 spalteX = München datum = 1244251709
entryID = 1 spalteX = Berlin datum = 1244231809
Ich hätte also gerne:
1 Peter Meier Berlin 1244231809
und
2 Jan Schmidt München 1244251709
Danke
Guido
Hello,
tabelle1.entyID, tabelle1.spalte1, tabelle1.spalte2,
...der Teil ist kein Problem
tabelle2.datum mit dem aktuellsten Datum haben.
...der Teil auch nicht...
tabelle2.spalteX und
...aber welchen Wert spalteX hättest du denn gerne? aktuellstes Datum ist ja schön, aber welchen Wert für spalteX?
Habe die Tabellen bereits per LEFT JOIN verknüpft
Gruppiere nach allen Spalten außer dem Datum und wähle das MAX(datum)
SELECT spalte, spalte, MAX(spalte)
FROM ...
GROUP BY spalte, spalte
MfG
Rouven
»» tabelle2.spalteX und
...aber welchen Wert spalteX hättest du denn gerne? aktuellstes Datum ist ja schön, aber welchen Wert für spalteX?
Den Wert, der zum aktuellsten Datum gehört, also in der Spalte mit dem aktuellsten Datum steht.
mit einem korrelierten Subselect bekommst Du die Datensätze mit dem aktuellsten Datum je entryID. Joine Deine Tabelle1 mit diesem Subselect, siehe zum Beispiel </archiv/2008/8/t175461/#m1153411>.
Danke, schau ich mir mal an.
Hoffentlich bin ich dann schlauer. :-)
Hallo,
ich habe hier zwei Tabellen mit folgendem Aufbau:
Tabelle1:
entryID(auto_increment/Primary Key), spalte1, spalte2Tabelle2:
entryID spalteX, datum(unix_timestamp)In Tabelle 2 kann mehrmals die gleiche entryID stehen, ich möchte aber nur
tabelle1.entyID, tabelle1.spalte1, tabelle1.spalte2, tabelle2.spalteX und tabelle2.datum mit dem aktuellsten Datum haben.
Beispiel:
Schön, dass Du ein Beispiel bringst, das vergessen viele.
Tabelle1:
entryID = 1 spalte1 = Peter spalte2 = Meier
entryID = 2 spalte1 = Jan spalte2 = SchmidtTabelle2:
entryID = 1 spalteX = Hamburg datum = 1244231709
entryID = 2 spalteX = München datum = 1244251709
entryID = 1 spalteX = Berlin datum = 1244231809
Es ist eine gute Idee, Tabellen tabellarisch darzustellen :-)
Ich hätte also gerne:
1 Peter Meier Berlin 1244231809
und
2 Jan Schmidt München 1244251709
mit einem korrelierten Subselect bekommst Du die Datensätze mit dem aktuellsten Datum je entryID. Joine Deine Tabelle1 mit diesem Subselect, siehe zum Beispiel </archiv/2008/8/t175461/#m1153411>.
Freundliche Grüße
Vinzenz