[BraLUG] SQL-Problem

Robert Schulze rob at net-pr.de
Fr Apr 27 14:01:53 CEST 2007


Hallo Michael,

> by mysql geht so etwas:
>
> ORDER BY rand() LIMIT 1

Naja, das Problem ist ja, dass ich zufällige vier Datensätze mit je
unterschiedlicher Lage haben will.

> Das finde ich etwas verwirrend. Eigentlich sollte die Anfrage nicht
> funktionieren, da die Attribute hinter Select alle (ausser .Lage) nicht
> Teil des Group By-Ausdrucks sind und auch keine Aggregatfunktionen sind.

Ja, bei mir entstehen SQL-Queries meist per Trial & Error ;-)
Wenn ich alle Spalten mit in die GROUP BY-Klausel nehme, dann erhalte ich
knapp 700 Datensätze.
Ich will aber nur 4 zufällige, daher dachte ich mir, lass doch mysql nach
Lage gruppieren, so fallen dann alle mehrfachen Datensätze einer Lage raus.

Mich interessiert besonders, ob das überhaupt mit einer Abfrage zu
bewerkstelligen ist, oder ob ich da Subqueries benutzen muss. Ich will nicht
unbedingt mit Perl über im schlimmsten Fall 700 Datensätze iterieren, bis
ich _ein_ Objekt aus jeder Lage zusammen habe, das will ich eigentlich dem
DBMS überlassen.

Vielen Dank, trotzdem!

Rob




Mehr Informationen über die Mailingliste Bralug