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