Limit nur auf einen Datensatz anweden
UndSo
- datenbank
Hallo liebes Forum,
habe jetzt zwei Tabellen.
Eine ist für die Kategorie der Fotogalerie zuständig. Dort ist auch die Beschreibung der Kategorie, wieviele Kommentare usw:
präfix_galerie
In der zweiten sind die ganzen Bilder eingefügt für jede zugewiesene Kategorie:
präfix_galeriebilder
Nun möchte ich auf der ersten Seite alle Kategorieren auflisten und ein zufälliges Bild zu jeder Kategorie. Wenn ich nun Limit1 mache holt er nur eine Kategorie. Er sollte alle Kategorien holen und nur ein zufälliges Bild und nicht alle Bilder von präfix_galeriebilder due für die Kategorie zugeordnet sind:
Wie muss ich das nun anstellen? Geht das überhaupt?
MySQL 4
select A.kategorie, A.name, A.beschreibung, A.themen, A.antworten, B.thumbname from präfix_galerie AS A INNER JOIN präfix_galeriebilder AS B on A.kategorie=B.kategorie where ???;
Viele Grüße
Servus,
Kann deine MySQL 4 Version Unterabfragen / Subqueries?
Wenn ja, dann kannst du eine korrelierende Unterabfrage benutzen und in jener ein ORDER BY RAND() einsetzen.
Wenn nicht, dann könntest du es weiterhin mit einem JOIN der beiden Tabellen und einem GROUP BY versuchen. GROUP BY natürlich dann auf alle Felder der Tabelle [präfix_galerie]. Wobei "präfix" eine ungünstige Namensgebung ist, aufgrund des ä.
Cheers,
Frank
Hi,
vielen Dank für den Tipp.
Werde mal schauen, ob die Version Unterabfragen kann oder nicht. Werde mich dann in Unterabfragen einarbeiten, da ich das zum ersten mal höre, dürfte aber kein Problem sein.
Den präfix habe ich jetzt einfach nur so in dem Raum geworfen, heißt bei mir eh anders.
Grüße
yo,
unterabfragen gehen ab version 4.1
Ilja
jep, danke.
hab auch 4.1.1
Werde erst mal mit der query von oben das script weiterschreiben und dann anschließend mir unterabfragen anschauen.
grüße
yo,
Nun möchte ich auf der ersten Seite alle Kategorieren auflisten und ein zufälliges Bild zu jeder Kategorie.
select A.kategorie, A.name, A.beschreibung, A.themen, A.antworten, MAX(B.thumbname)
from präfix_galerie AS A
INNER JOIN präfix_galeriebilder AS B on A.kategorie=B.kategorie
GROUP BY A.kategorie, A.name, A.beschreibung, A.themen, A.antworten
;
dies gibt dir jeweils ein bild pro kategorie, allerdings nicht random. es gibt noch eine funktion unter mysql, die random erzeugt, allerdings fällt mir der name und deren syntax im moment nicht ein, einfach mal in der doku nachschauen. eventuell musst du dann auf korrelierte unterbafragen umstellen.
Ilja
Oh super,
bisher hat mich ilja hier im selfforum nie sitzen lassen, wenn es um datenbanken geht ;) vielen vielen dank ^^
Die Query von oben funktioniert sehr gut. Auf random könnte ich vorläufig eh mal verzichten ;)
Grüße
yo,
bisher hat mich ilja hier im selfforum nie sitzen lassen, wenn es um datenbanken geht ;) vielen vielen dank ^^
man könnte glatt vermuten, ich selbst hätte den beitrag geschrieben....
Ilja
*gg*
jep genau ;)
undso