php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2011, 10:40  
Neuer Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
spy15 befindet sich auf einem aufstrebenden Ast
Standard Mysql Zufälliges Bild anzeigen, single Query

Hallo Leute
Ich bin derzeit an einem Script, welches alle Fotoalben mit zufälligem Bild ausgeben soll.
Die Datenbank-Tabelle sieht so aus:
Code:
id - title - imgpath - albumid
Ich habe also alle Bilder in einer Tabelle, welches Bild in welchem Album ist, steht in dem Feld albumid.

Wenn ich nun für jedes Album ein zufälliges Bild wählen will, muss ich diesen Query für jedes einzelne Album ausführen:
Code:
SELECT * FROM `fotos` WHERE `albumid` = 'album1' ORDER BY RAND() LIMIT 0,1
Ist es möglich, dieses vorhaben mit nur einer DB Abfrage zu lösen?
Also, das mit die DB je ein zufälliges Bild bez. Eintrag von jedem Album zurück gibt.

Oder habt ihr sonst eine Idee, wie man das Optimal lösen kann?

vielen dank schon mal für eure Hilfe
spy15 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.08.2011, 11:13  
Erfahrener Benutzer
 
Registriert seit: 25.01.2009
Beiträge: 1.027
PHP-Kenntnisse:
Fortgeschritten
Capfly befindet sich auf einem aufstrebenden Ast
Capfly eine Nachricht über ICQ schicken Capfly eine Nachricht über MSN schicken
Standard

machs mit einer Funktion
__________________
MfG
~Capfly
Jetzt NEU! Cpix & Wbits Katahlan.de - Das Browsergame
Capfly ist offline   Mit Zitat antworten
Alt 27.08.2011, 12:31  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Ich sehe keine andere Möglichkeit, als eben eine Abfrage für jedes Album auszuführen.
Zunächst also eine Liste aller Alben abfragen und dann für jedes Album 1 Bild auswählen. Das kann man aber einfach in einer Funktion ablaufen lassen.

Ich würd' mir aber auch nochmal Gedanken über das Datenmodell machen. In der gegenwärtigen Konstruktion kann 1 Bild immer nur zu 1 Album gehören. Nach meiner Erfahrung ist das meistens unbefriedigend; deshalb würde ich die Zuordnung Bild zu Album in eine separate Tabelle auslagern. Du hättest dann 3 Tabellen: Bilder, Alben, Zuordnung Bild-Album.
achtelpetit ist offline   Mit Zitat antworten
Alt 27.08.2011, 12:45  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
SELECT * FROM (SELECT * FROM `fotos` ORDER BY RAND()) GROUP BY `albumid`
GROUP BY und ORDER BY RAND() gehen nicht in einem Query, da das GROUP BY vor der zufälligen Sortierung ausgeführt würde.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 27.08.2011, 13:11  
Erfahrener Benutzer
 
Registriert seit: 25.01.2009
Beiträge: 1.027
PHP-Kenntnisse:
Fortgeschritten
Capfly befindet sich auf einem aufstrebenden Ast
Capfly eine Nachricht über ICQ schicken Capfly eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Code:
SELECT * FROM (SELECT * FROM `fotos` ORDER BY RAND()) GROUP BY `albumid`
GROUP BY und ORDER BY RAND() gehen nicht in einem Query, da das GROUP BY vor der zufälligen Sortierung ausgeführt würde.
Wo hast du denn jetzt das GROUP BY gelesen???
__________________
MfG
~Capfly
Jetzt NEU! Cpix & Wbits Katahlan.de - Das Browsergame
Capfly ist offline   Mit Zitat antworten
Alt 27.08.2011, 13:18  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Capfly Beitrag anzeigen
Wo hast du denn jetzt das GROUP BY gelesen???
Nirgends, das ist mein Lösungsvorschlag und die Erklärung dazu.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5

Geändert von G.Schuster (27.08.2011 um 13:25 Uhr).
G.Schuster ist offline   Mit Zitat antworten
Alt 28.08.2011, 00:09  
Neuer Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
spy15 befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antworten.
Ich hab es nun folgendermassen gelöst:
PHP-Code:
foreach($alben AS $name){
//lade zufälliges bild
$count 0;
$name_ok mysql_real_escape_string($name['pageid']);
$result mysql_query("SELECT `thumbpath`, COUNT(*) AS `count` FROM `fotos` WHERE `albumid` = '$name_ok' ORDER BY RAND() LIMIT 0,1");
if(
$result){
    
//query erfolgreich
    
$image mysql_fetch_row($result);
    
//wenn das bild nicht gefunden wurde, bez. das album keine bilder hat, wird dies durch ein default ersetzt.
    
$count $image[1];
    
$image = (empty($image[0]) OR !file_exists($image[0]))?$defaultImg:$image[0];
    } 
Neben der URL zum Bild, wird auch die Anzahl Bilder vom aktuellen Album ausgegeben.
gruss
spy15 ist offline   Mit Zitat antworten
Alt 28.08.2011, 00:25  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Oh man...unnötiger kann man Queries kaum verballern.
Du bekommst die Lösung auf dem Silbertablett serviert und verwendest dann sowas...muss ich nicht verstehen.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 29.08.2011, 12:15  
Neuer Benutzer
 
Registriert seit: 16.07.2010
Beiträge: 6
PHP-Kenntnisse:
Anfänger
spy15 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Oh man...unnötiger kann man Queries kaum verballern.
Du bekommst die Lösung auf dem Silbertablett serviert und verwendest dann sowas...muss ich nicht verstehen.
Danke für diesen Beitrag, denn sonst hätte ich dies wohl nicht noch mal angeschaut.
Denn beim genaueren Hinsehen, hab ich was bemerkt....

Ich fand es schon komisch, das ein Query gepostet wurde, der GROUP BY und ORDER BY in einem Query/String hat, obwohl das ja nicht geht.
Zitat:
GROUP BY und ORDER BY RAND() gehen nicht in einem Query, da das GROUP BY vor der zufälligen Sortierung ausgeführt würde.
Da dachte ich, es geht nicht, also hab ichs gar nicht probiert und den Code nur überflogen, bis ich jetzt den Code ganz gelesen hab....

Hab den Query noch ein wenig modifiziert:

PHP-Code:
SELECT `thumbpath`,`albumid`,COUNT(`id`) AS `countFROM (SELECT FROM `fotosORDER BY RAND()) AS `albumGROUP BY `albumid
Gibt nun je ein zufälliges Bild von den Alben mit der Anzahl der Bilder pro Album und der albumid
Genau was ich wollte
Vielen dank für die super Hilfe !
spy15 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Ein Bild aus einer Email anzeigen timmyk3 PHP Einsteiger 10 19.08.2011 10:25
Mitarbeiter für Query OS gesucht Kasenoru Sonstige 0 18.06.2011 00:34
imagecreatefromjpeg() "Allowed memory size exhausted" peter silie PHP Tipps 2010 17 04.05.2011 14:25
Mit Imagelist ausgewähltes Bild anzeigen deJoschi PHP Einsteiger 2 15.02.2011 12:38
Bild als Link über einem anderen Bild anzeigen befubo HTML, Usability und Barrierefreiheit 7 04.02.2011 16:04
[Erledigt] Problem MYSQL Bilder aus DB anzeigen alexalbion Datenbanken 20 08.09.2010 22:17
MySQL: INSERT INTO oder UPDATE verknüpft in einem Query juice122 Datenbanken 21 06.05.2010 20:25
[Erledigt] In String nach einem Wort suchen -> MySQL Query durchführen markiloy PHP Tipps 2010 14 29.04.2010 19:40
[Erledigt] MySQL Query verschiedene Ergebnisse PHP und MySQL Matt0815 Datenbanken 2 31.03.2010 19:37
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
[Erledigt] zufälliges Bild aus Datei lesen - Bild wird nicht angezeigt Romantika PHP Tipps 2009 8 20.02.2009 15:36
[Erledigt] Bild aus MySQL lesen und anzeigen Sonorc PHP Tipps 2008 5 24.12.2008 15:59
[Erledigt] Bild anzeigen, wenn ein bestimmter Name aus MySQL gelesen wird AJ79 Datenbanken 3 15.07.2008 13:16
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Bild anzeigen - Bildname kommt aus MySQL PHP Tipps 2004 9 07.09.2004 14:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
singlequery php, mysql single query, zufälliges bild php

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum