Code: Alles auswählen
SELECT wert FROM tabelle GROUP BY gruppe;
Code: Alles auswählen
SELECT wert FROM tabelle GROUP BY gruppe ORDER BY rand();
Herzlich willkommen im Archiv vom ABAKUS Online Marketing Forum
Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.
Code: Alles auswählen
SELECT wert FROM tabelle GROUP BY gruppe;
Code: Alles auswählen
SELECT wert FROM tabelle GROUP BY gruppe ORDER BY rand();
$sql = "SELECT * FROM tabelle GROUP BY gruppe ORDER BY rand() ";
$ergebnis = mysql_query($sql);
while($row = mysql_fetch_object($ergebnis))
incubus hat geschrieben:imho gibt es kein "order by rand" sondern nur desc und asc!
Du packst die Ergebnisse doch eh in ein Array. Schau dir mal array_rand an...
....Allerdings können Sie Datensätze in zufälliger Folge abrufen. Das funktioniert wie folgt:
mysql> SELECT * FROM tbl_name ORDER BY RAND();
...
...
Sorry, wusste ich nichthmm... das sollteste aber sofort den Autoren vom offiziellen mySQL Manual mitteilen... die behaupten da ganz etwas anderes:
Quelle: MySQL 5.1 Referenzhandbuch
Zitat:
....Allerdings können Sie Datensätze in zufälliger Folge abrufen. Das funktioniert wie folgt:
mysql> SELECT * FROM tbl_name ORDER BY RAND();
...
...
Dabei wird aber nur eine zufällige Gruppe ausgegeben,der Wert aus Gruppe 1 ist aber immer der gleiche.Ich habe es bei mir getestet und es funktioniert -> SELECT objekt_id FROM objekt group by ort ORDER BY rand()
Du hast RechtZitat:
Ich habe es bei mir getestet und es funktioniert -> SELECT objekt_id FROM objekt group by ort ORDER BY rand()
Dabei wird aber nur eine zufällige Gruppe ausgegeben,der Wert aus Gruppe 1 ist aber immer der gleiche.
Hab ich schon gelesen, Subselects gehen aber bei MySQL <= 4.0.25 nicht, das bringt mir also nichts.Gerade gefunden:
https://forum.de.selfhtml.org/archiv/2004/9/t89821/
Ne, sind nur 4. Ich lese jetzt einfach alle spalten aus und schreib den wert für jede gruppe in ein Array das ich dann über die Gruppen ID abrufen kann.wenn es nicht zu viele gruppen sind könnteste für jede Gruppe einen zuifallswert abfragen.... eben der Nachteil, dass es pro Gruppe eine abfrage gibt...
Code: Alles auswählen
SELECT a.gruppe,
(SELECT b.wert FROM tabelle AS b WHERE a.gruppe = b.gruppe ORDER BY RAND() LIMIT 1) AS wert
FROM tabelle AS a
GROUP BY a.gruppe
Genau das ist das Problem, das ganze ist für einen phpBB3 Mod gedacht und da muss man mit rechnen dass es Leute gibt die MySQL < 4.1 haben. Ich hab das jetzt mit PHP gelöst, ist zwar nicht so schon weil alle Zeilen erstmal durch eine Schleife laufen, aber es funktioniert.MySQL > 4.1?
jo... im Mysql Handbuch wird auch explizit darauf hingewiesen...Airport1 hat geschrieben:Achtung, zumindest frueher war RAND() bzgl. "echten Zufalls" absolut nicht zu gebrauchen, sprich: es ist nicht nur pseudo-Zufall womit man noch halbwegs leben koennte, sondern einer der schlechtesten Zufallsgeneratoren die ich mein Lebtag erlebt habe.. meine sogar die Zufallsgeneratoren von PHP waren dem meilenweit ueberlegen
gut... die Worte sind nicht ganz so drastisch gewählt wie deine... aber ich glaube die meinen das selbe...RAND() ist nicht als perfekter Zufallsgenerator gedacht, sondern stellt eine gute Möglichkeit da, ad hoc Zufallszahlen zu erzeugen, die innerhalb derselben MySQL-Version plattformübergreifend funktioniert.