Vinzenz Mai: erste Zeile einer Gruppe ausgeben

Beitrag lesen

Hallo

Ich möchte jetzt eine Abfrage, welche mir folgendes Ergebnis zurückliefert

gal_id gal_titel gal_datum gi_image

wobei gi_image nur das erste Bild aus der entsprechenden Gallerie ist. Dazu benutze ich momentan ein SQL-Statement ähnlich wie

gal_id gal_titel gal_datum gi_image
1  Weihnachten 24.12.07 bild1.jpg
2  Silvester 31.12.07 pic1.gif

wie üblich geht dies mit einer korrelierten Unterabfrage, siehe auch dieses Archivposting:

  
SELECT                                 -- Gib mir  
    g.gal_id,                          -- die ID der Galerie,  
    g.gal_titel,                       -- ihren Titel  
    g.gal_datum,                       -- ihr Datum  
    gi.gi_image                        -- und ein Bild  
FROM  
    galerie g                          -- aus jeder Galerie  
INNER JOIN  
    galerieimages gi                   -- und den zugehörigen Bildern  
ON  
    g.gal_id = gi.gi_gal_id  
/*  
    Beachte:  
    Da Du in der Unterabfrage auf die gleiche Tabelle zugreifst und diese  
    über die WHERE-Klausel mit der äußeren Tabelle verknüpfst, was man eben  
    als korrelierte Unterabfrage bezeichnet, musst Du unbedingt Aliasnamen  
    für die Tabelle galerieimages verwenden.  
*/  
WHERE                                  -- wobei ich nur das Bild haben möchte,  
    gi.gi_sortorder = (                -- dessen Sortierungswert den  
        SELECT  
            MIN(gi2.gi_sortorder)      -- kleinsten Wert  
        FROM  
            galerieimages gi2          -- innerhalb der Galerien hat.  
        WHERE  
            gi2.gi_gal_id = gi.gi_gal_id  
    )  

Ich habe es nicht übers Herz gebracht, Galerie mit zwei L zu schreiben, da
kommt mir nämlich die Galle hoch - und das mag ich überhaupt nicht.
MS SQL Server 2000 unterstützt Subqueries, da brauchst Du Dir keine Gedanken
zu machen.

Freundliche Grüße

Vinzenz