In einer Fotogalerie können verschiedene Benutzer beliebig viele Bilder hochladen. Jedem Bild kann eine Kategorie zugeordnet werden.
Die dazugehörige mySQL-Tabelle hat folgende Struktur:
Bei der Auswahl einer Kategorie werden die Bilder in Abhängigkeit der Zeitstempel sortiert ausgegeben. Die Zeitstempel werden an anderer Stelle regelmäßig geändert. Dadruch werden immer andere Bilder angezeigt.
Die mySQL-Abfrage für 40 Bilder der Kategorie 'Landschaft' sieht beispielsweise wie folgt aus:
SELECT * FROM fotos
WHERE fotos.Kategorie = 'Landschaft'
ORDER BY fotos.Zeitstempel ASC
LIMIT 40
Das funktioniert so weit auch - bis auf folgendes Problem:
Bei obiger Abfrage kommt es vor, dass von einem Benutzer mehrere Bilder ausgegeben werden. Ich möchte aber pro Benutzer maximal 1 oder 2 Bilder angezeigt bekommen.
Und an dieser Stelle komme ich nicht weiter und benötige Hilfe.
Bei maximal einem Bild und Verwendung von 'GROUP BY fotos.BenutzerID' erhalte ich stets dasselbe Bild zum jeweiligen Kunden aber nicht das Bild mit dem ältesten Zeitstempel.
Bei der Filterung nach maximal zwei Bildern je Benutzer wird es für mich noch komplizierter.
Auf der Suche nach einer Lösung bin ich auf ähnliche Anfragen gestoßen, allerdings betrafen die immer zwei getrennte Tabellen. Die Umsetzung auf eine einzige Tabelle habe ich leider nicht hinbekommen.
Für mögliche Lösungsvorschläge bedanke ich mich schon jetzt recht herzlich.
Die dazugehörige mySQL-Tabelle hat folgende Struktur:
fotos.ID | Eindeutige ID des Bildes. |
fotos.BenutzerID | ID des Benutzers. |
fotos.Kategorie | Name der Kategorie. |
fotos.Zeitstempel | Zeit, wann dieses Bild zuletzt angezeigt wurde. |
fotos.Url | Url des Bildes. |
Bei der Auswahl einer Kategorie werden die Bilder in Abhängigkeit der Zeitstempel sortiert ausgegeben. Die Zeitstempel werden an anderer Stelle regelmäßig geändert. Dadruch werden immer andere Bilder angezeigt.
Die mySQL-Abfrage für 40 Bilder der Kategorie 'Landschaft' sieht beispielsweise wie folgt aus:
SELECT * FROM fotos
WHERE fotos.Kategorie = 'Landschaft'
ORDER BY fotos.Zeitstempel ASC
LIMIT 40
Das funktioniert so weit auch - bis auf folgendes Problem:
Bei obiger Abfrage kommt es vor, dass von einem Benutzer mehrere Bilder ausgegeben werden. Ich möchte aber pro Benutzer maximal 1 oder 2 Bilder angezeigt bekommen.
Und an dieser Stelle komme ich nicht weiter und benötige Hilfe.
Bei maximal einem Bild und Verwendung von 'GROUP BY fotos.BenutzerID' erhalte ich stets dasselbe Bild zum jeweiligen Kunden aber nicht das Bild mit dem ältesten Zeitstempel.
Bei der Filterung nach maximal zwei Bildern je Benutzer wird es für mich noch komplizierter.
Auf der Suche nach einer Lösung bin ich auf ähnliche Anfragen gestoßen, allerdings betrafen die immer zwei getrennte Tabellen. Die Umsetzung auf eine einzige Tabelle habe ich leider nicht hinbekommen.
Für mögliche Lösungsvorschläge bedanke ich mich schon jetzt recht herzlich.
Kommentar