[MySQL] Keine doppelten Inhalte

flaschenkind

Well-known member
ID: 118459
L
20 April 2006
4.507
337
Ich habe folgende Query:

Code:
SELECT `galerien`.`name`, `fotos`.`foto` FROM `cms_galerien` AS `galerien` LEFT JOIN `cms_galerien_fotos` AS `fotos` ON `fotos`.`galerie`=`galerien`.`id`

Bei der Query kommen bei mehreren Fotos in einer Galerie, aber mehrmals die selbe ID. Ich möchte aber maximal 1 Foto pro Galerie (gut wäre zufall). Wie kann ich das machen?
 
Zuletzt bearbeitet:
Probier mal GROUP BY fotos.galerie, bin mir aber nicht sicher, ob da was vernünftiges rauskommt.
 
Damit bekomm ich die Kategorie maximal einmal angezeigt, aber trotzdem werden 2 Bilder ausgegeben. Aber damit bin ich schonmal nen Schritt weiter, notfalls mache ich den Rest per PHP ;)
 
Thx, werde ich gleich mal testen :)

EDIT: Hmm, ich weiß nicht. Er hatte da eine Tabelle und das hier sind zwei :-?
 
Zuletzt bearbeitet:
Code:
SELECT `galerien`.`name`, `fotos`.`foto` 
FROM `cms_galerien` AS `galerien` 
LEFT JOIN `cms_galerien_fotos` AS `fotos` 
ON `fotos`.`galerie`=`galerien`.`id`
GROUP BY `galerien`.`id`

Beim Zufall müsste ich nochmal überlegen
 
Damit bekomm ich das zwar Zufällig, aber auch nur sachen aus der foto Tabelle. Die Galerie Namen und so aus der Galerie Tabelle werden nicht beachtet.
Aber vllt schaffe ich es mit dem Query ansatz jetzt auch selber, mal versuchen ;)
Thx schonmal.

EDIT: Ich glaub ich bekomms doch nich hin :-?
Ich hab mir das jetzt mal so abgeändert:
Code:
SELECT *
FROM (
SELECT *
FROM cms_galerien
ORDER BY RAND( )
) AS galerien
WHERE galerien.id
IN (
SELECT galerie
FROM cms_galerien_fotos
AS bilder
GROUP BY bilder.galerie
)
GROUP BY galerien.id

Damit bekomm ich den Namen der Galerie und die Beschreibung, aber nicht das Foto. Mit deiner Variante bekomm ich das Foto, aber nicht den Namen und die Beschreibung.
 
Zuletzt bearbeitet:
Das liefert dir auch name, beschreibung, bild etc aus galerie und galerie_bilder (sry für die falschen Tabellennamen *gg*)

Code:
SELECT *
FROM (

SELECT *
FROM galerie_bilder
ORDER BY RAND( )
) AS bilder, galerie
WHERE bilder.galerie_id
IN (

SELECT id
FROM galerie
GROUP BY id
)
GROUP BY bilder.galerie_id
 
Np wegen den falschen Tabellennamen, das bekomm ich grade noch so selber angepasst :biggrin:

Jeztt funktioniert es, vielen Dank :D :)