requete Mysql et classement des résultats

dabal10

Nouveau WRInaute
Bonjour,

Tout d'abord je me présente, je suis nouveau membre, développeur amateur depuis peu de temps ( soyez indulgents :D ) et dans "mon essai" de développer un site, je bloque sur une requête, peut-être simple mais sur laquelle je m'arrache les cheveux...

Pour faire clair, j'ai une table Mysql qui contient un champ "categorie" et je souhaite récuperér 3 lignes aléatoires pour chaque valeur de ce champ "catégorie".

Par exemple, le champ categorie peut etre Renault, Peugeot, Mercedes, BMW, ... Je souhaite récupérer 3 lignes au hasard pour chacune de ces valeurs du champ catégorie:
3 lignes aléatoires où categorie=Renault
3 lignes aléatoires où categorie=Peugeot
3 lignes aléatoires où categorie=Mercedes
3 lignes aléatoires où categorie=BMW...


Si quelqu'un pouvait m'aider... Merci.
 

dabal10

Nouveau WRInaute
Merci pour la réponse.

cependant, en effectuant cette reqête, j'obtiens 3 résulats pour "renault" seulement.

Or je souhaite 3 résulats aléatoires pour Renault, 3 résulats aléatoires pour Peugeot,etc...

Je pourrais effectuer une requête pour chaque valeur de mon chaamp catégorie mais n'est-ce pas possible de le faire en une seule requete?
 

spout

WRInaute accro
PHP:
<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">(</span><span class="syntaxdefault">SELECT </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> FROM categories WHERE name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Renault'</span><span class="syntaxdefault"> ORDER BY RAND</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> LIMIT 3</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">UNION<br /></span><span class="syntaxkeyword">(</span><span class="syntaxdefault">SELECT </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> FROM categories WHERE name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Peugeot'</span><span class="syntaxdefault"> ORDER BY RAND</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> LIMIT 3</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">UNION<br /></span><span class="syntaxkeyword">(</span><span class="syntaxdefault">SELECT </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> FROM categories WHERE name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Mercedes'</span><span class="syntaxdefault"> ORDER BY RAND</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> LIMIT 3</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">UNION<br /></span><span class="syntaxkeyword">(</span><span class="syntaxdefault">SELECT </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> FROM categories WHERE name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'BMW'</span><span class="syntaxdefault"> ORDER BY RAND</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> LIMIT 3</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"></span>
 

spout

WRInaute accro
PHP:
<span class="syntaxdefault"><br />$categories </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">'Renault'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Peugeot'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'Mercedes'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'BMW'</span><span class="syntaxkeyword">];<br /></span><span class="syntaxdefault">$queries </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[];<br />foreach(</span><span class="syntaxdefault">$categories as $category</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $queries</span><span class="syntaxkeyword">[]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> sprintf</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"(SELECT * FROM categories WHERE name = '%s' ORDER BY RAND() LIMIT 3)"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $category</span><span class="syntaxkeyword">);<br />}<br /></span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> implode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">' UNION '</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $queries</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault"></span>
 

loubet

WRInaute impliqué
mais cela oblige toujours à ajouter une nouvelle catégorie manuellement dans le code.

ceci dit, je n'ai pas mieux.
 

Discussions similaires

Haut