Hallo
Glaub das ist etwas komplizierter!
aber nur ein wenig.
users:
user_id|name|alterfotos:
id|user_id|datum
Schließlich gibt es in SELFHTML Aktuell zwei Artikel zu JOINS, die ich Dir
als Lektüre empfehle:
Einführung in Joins
Fortgeschrittene Jointechniken
Ich will jetzt alle namen derjenigen haben, die mehr als 5 fotos haben.
und natürlich auch den Benutzernamen dazu:
Im ersten Schritt lassen wir uns alle Benutzer mit den zugehörigen id-Werten ihrer Bilder anzeigen:
SELECT
users.name,
fotos.id
FROM
users
INNER JOIN fotos -- die beiden Tabellen sind durch die
ON users.user_id = fotos.user_id -- Spalte user_id verknüpft
Nun zählen wir die Bilder, d.h. wieviele ids jedem Benutzer zugeordnet sind:
SELECT
users.name,
COUNT(fotos.id) AS Anzahl
FROM
users
INNER JOIN fotos -- die beiden Tabellen sind durch die
ON users.user_id = fotos.user_id -- Spalte user_id verknüpft
GROUP BY users.name -- Zu jedem Namen gibt es eine Spalte
Aber: es könnte ja zwei Benutzer mit gleichem Namen geben:
SELECT
users.id,
users.name,
COUNT(fotos.id) AS Anzahl
FROM
users
INNER JOIN fotos -- die beiden Tabellen sind durch die
ON users.user_id = fotos.user_id -- Spalte user_id verknüpft
GROUP BY
users.id, -- gleichnamige Benutzer an der id
-- unterscheiden
users.name -- Zu jedem Namen gibt es eine Spalte
Nur die mit mehr als fünf Bildern, das erledigt die HAVING-Klausel, siehe
in SELFHTML aktuell Datensätze gruppieren mit SQL:
SELECT
users.id,
users.name,
COUNT(fotos.id) AS Anzahl
FROM
users
INNER JOIN fotos -- die beiden Tabellen sind durch die
ON users.user_id = fotos.user_id -- Spalte user_id verknüpft
GROUP BY
users.id, -- gleichnamige Benutzer an der id
-- unterscheiden
users.name -- Zu jedem Namen gibt es eine Spalte
HAVING COUNT(fotos.id) > 5 -- nur solche mit mehr als fünf Bildern
Wie du siehst eine ziemlich schwierige angelegenheit.
Wenn Du Dich damit eine Weile beschäftigst, findest Du heraus, dass das gar
nicht so schwierig ist.
Freundliche Grüße
Vinzenz