Guido G.: SELECT über zwei Tabellen ohne doppelte Einträge.

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

  1. 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

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Friendships are a lot like a backyard garden. We plan to tend to them, but we just always seem to put it off until next week. --  Christian Clemenson as Jerry Espenson in Boston Legal: "Patriot Acts"
    1. »» 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. :-)

  2. 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.

    Beispiel:

    Schön, dass Du ein Beispiel bringst, das vergessen viele.

    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

    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