sélection aléatoire d'enregistrement en fonction de .... [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 26-06-2005 à 23:09:38
Si t'as une version récente de MySQL, et si MySQL supporte les ORDER BY et LIMIT dans des sous requêtes, tu peux tenter : (faut pas avoir peur, c'est aussi rapide qu'une jointure normale)
Code :
|
A supposer que le "RAND()" fonctionne correctement sous SQL Server (ce qui n'est pas le cas), ça marcherait. Par contre, Oracle n'aime pas les ORDER BY dans les sous requêtes. Donc c'est qu'une question de pot...
Si ça marche pas, je crains que tu ne sois obligé de faire ça avec une boucle.
Marsh Posté le 26-06-2005 à 20:19:08
Salut all,
Avant toute chose, je connais déjà : ORDER BY RAND() LIMIT 1.
J'ai un petit problème pour sélectionner aléatoirement un enregistrement :
J'aimerais récupérer une image aléatoire d'une oeuvre appartenant à une collection.
Pour être plus clair, je veux afficher une liste de collection avec une image aléatoire appartenant à la collection en question.
-> collection 1 : image143
-> collection 2 : image432
-> etc...
ma requete actuelle :
Cette requete m'affiche bien toutes les collections mais m'affiche la première image trouvée en rapport avec la collection.
si je rajouter 'order by rand() limit 1', ben...j'ai plus qu'une collection.
si j'enleve le 'group by' pour le remplacer par 'order by rand()' - sans limit - j'ai toutes les images de la collection.
Savez vous comment je pourrais :
- avoir toute la liste des collection
- selectionner une oeuvre de la collection au hasard
- selectionner une image de cette oeuvre au hasard
en gros, la même chose que ma requête sauf que l'image serait aléatoire...
si ca peut aider :
collection(1,N) - (1,1)oeuvres(1,N) - (1,1)images
merci