LEFT OUTER JOIN kombiniert mit MIN()

BeSt79

Grünschnabel
Hallo.

Dies ist mein erster Post hier und ich hoffe sehr, dass ihrgendjemand mir helfen kann. Vielen Dank schonmal für eure Hilfe...

Ich habe 2 Tabellen:
Tabelle "Firma"
Code:
idx  |  Name       
===========================
001  |  Mustermann AG
002  |  Schuster GbR
003  |  Huber GmbH

Tabelle "Wiedervorlage"
Code:
firma  |  Datum       |  erledigtAm
=============================================
001    |  2013-05-10  |  NULL
002    |  2013-07-13  |  NULL
001    |  2013-02-22  |  NULL
003    |  2013-01-05  |  2013-03-12
Diese möchte ich mit einem LEFT OUTER JOIN verknüpfen und habe dazu dieses SQL-Statement gebaut:
Code:
SELECT f.idx, f.Name, w.Datum
       FROM firma f
       LEFT OUTER JOIN wiedervorlage w ON w.firma = f.idx
       WHERE w.erledigtAm IS NULL
             AND (
               von <= '2013-09-10 11:38:11'
               OR von IS NULL
             )

Damit bekomme ich dieses Resultset:
Code:
idx  |  Name            |  Datum
===========================
001  |  Mustermann AG   |  2013-05-10
002  |  Schuster GbR    |  2013-07-13
001  |  Mustermann AG   |  2013-02-22


Achtung, jetzt kommt die eigentliche Frage:

Wie schaffe ich es, dass ich im Resultset pro "Mandant" (linke Tabelle) nur 1 Zeile bekomme und zwar die mit dem kleinesten "Datum" aus der rechten Tabelle?

Ich habe bereits versucht einfach ein "SELECT DISTINCT" zu machen, aber das wird völlig ignoriert.

Ich habe schon alles mögliche (was mir eingefallen ist jedenfalls) versucht, aber alles war Erfolglos.
Daher hoffe ich nun auf euch Profis!

Danke für jeden Tip

LG
Benni
 

Yaslaw

n/a
Moderator
GROUP BY und MIN() ist das was du suchst
SQL:
SELECT 
    f.idx, 
    f.name, 
    MIN(w.datum) AS datum 
FROM 
    firma f
    LEFT OUTER JOIN wiedervorlage w 
        ON w.firma = f.idx 
WHERE 
    w.erledigtam IS NULL 
    AND (
        von <= '2013-09-10 11:38:11' 
        OR von IS NULL
    ) 
GROUP BY 
    f.idx, 
    f.name
 
Zuletzt bearbeitet von einem Moderator:

BeSt79

Grünschnabel
Unfassbar... Es war tatsächlich sooo einfach.

Vielen Dank für den Schups! Manchmal sieht man den Code vor lauter Statements nicht mehr :)
 

BeSt79

Grünschnabel
Hm....
leider war es doch nicht ganz die Lösung, die ich gebaucht habe.

Denn wenn nun in der Tabelle "Wiedervorlage" die letzte "offene Wiedervorlage" auch geschlossen wird, dann erscheint diese Firma nicht mehr in der Ergebnisliste...

Kann das jemand erklären?
 

Neue Beiträge