![]() |
[mysql] einen Wert pro JOIN zurückgeben
Betreff is schlecht, aber mir fallt kein gscheiter ein.
Das ganze soll mit mysql funzen - ich hab (extrem vereinfacht ;) ) folgendes: Ein Tabelle Zutaten, eine Tabelle Bilder Es gibt mehrere Bilder für eine Zutat. Ich möchte jetzt für zb Zutat 1,2,3 (ist natürlich ein dynamischer Wert der 1-10 Werte groß is) jeweils _ein_ zufälliges Bild aus der Bildertabelle nehmen und ausgeben. Also einmal: Tequila -> Olmeca-Bild, nächstes mal Sierra-Bild, etc. Grundsätzlich schaut die Abfrage für alle Bilder so aus: SELECT BildURL From tblBilder INNER JOIN tblZutaten ON tblBilder.Zutat_ID=tblZutaten.Zutat_ID WHERE tblZutaten.Zutat_ID IN (1,2,3) Mögliche Lösung ist, für jede Zutat eine Unterabfrage machen, dabei kommen dann 20 Unterabfragen in der wirklichen query raus (geht nicht nur für Zutaten, sondern auch für Deko, Gläser, Zubereitung, ...). Zweite Lösung wäre immer nur ein Bild pro Zutat einzutragen -> langweilig. In Wirklichkeit soll die Funktion folgendes machen: Für einen Cocktail vier zufällige Bilder auslesen, die sich aus Zutaten, Dekoration, Gläsern und Zubereitung des Cocktails ergeben. Aber wenn ich mal wüsst wie ich das Problem oben lös, krieg ich das hin ;) hoffe irgendwer versteht mich und weiß mir zu helfen mfg Thomas |
Ich schätz mal du gibst es nachher mit php aus. Also wird's wohl das einfachste sein, alle Werte für BildUrl in ein Array einzulesen und zufällig eins auszuwählen.
Jak |
Ja könnt ich natürlich machen, es wäre nur einfacher, wenns über sql ginge. ;)
Wenns nur um ein paar Werte ginge würd ichs eh machen, aber nachdem ich da ca 20-30 Bilder zrückkrieg von denen je ca. 2-3 "gleich" sind is das relativ zach, weil eben die wirkliche Tabelle noch weitere zu vergleichende Felder beinhaltet :( mfg Thomas ps: hab mal eine erste version online-gestellt, siehe hier http://tdt.td.ohost.de/php/singleview.php?C_ID=91 wenn man paar mal neu-laden drückt sollt sich was ändern ;) |
Am Schluß deiner Abfrage:
Code:
ORDER BY RAND() LIMIT 1 gruss, snowman |
ja, so ähnlich mach ich das momentan auch. das funktioniert aber nur, wenn ich nur für eine Zutat ein zufälliges Bild haben will.
Wenn ich aber für mehrere Zutaten, bei denen mehrere Bilder rauskommen (3 Zutaten mit je 3 Bildern, macht 9 Bilder) jeweils ein Bild/Zutat haben will geht das nicht ;) also (sagen wir mal vereinfacht): tblZutaten: 100 Zutaten tblBilder: 300 Bilder, 3 pro Zutat ich hab: Zutat_ID 1,2 und 3 und will für jede Zutat _jeweils ein_ Bild. Also quasi insgesamt 3 Bilder für diese Abfrage. Mögliche Lösung schaut so aus: Code:
SELECT BildURL From tblBilder mfg Thomas |
Das würde ich in PHP über eine Schleife für Zutat_ID machen.
gruss, snowman |
Meinst du das schreiben des Sql-Strings oder einfach alles aulesen und danach doppeltes rausschmeißen?
Hm, am besten wärs wohl beides zu testen und das schnellere zu nehmen - Ich mach halt nur gern möglichst viel Datenbankseitig, wenns um sowas geht ;) In Wirklichkeit würde das ganze mit verschachtelten Selects so aussehen: Code:
SELECT BildURL From tblBilder mfg Thomas :) |
Jo mai, ich hab jetz einfach ne Suchschleife drübergelegt, die doppelte IDs sucht und raushaut. Beim Datenbankauslesen tu ichs gleich zufällig sortieren, damit fällt mir das fürs array auch weg.
herzlichen Dank für eure Anregungen ;) mfg Thomas |
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag