requete Mysql et classement des résultats

Discussion dans 'Administration d'un site Web' créé par dabal10, 1 Novembre 2015.

  1. dabal10
    dabal10 Nouveau WRInaute
    Inscrit:
    25 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    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.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 022
    J'aime reçus:
    291
  3. dabal10
    dabal10 Nouveau WRInaute
    Inscrit:
    25 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    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?
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 022
    J'aime reçus:
    291
    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>
     
  5. dabal10
    dabal10 Nouveau WRInaute
    Inscrit:
    25 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    S'il n'y a pas d'autres solutions, cela fera l'affaire... :wink:

    Merci beaucoup!
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 022
    J'aime reçus:
    291
    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>
     
  7. dabal10
    dabal10 Nouveau WRInaute
    Inscrit:
    25 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Avec le code de PHP qui va avec... Parfait!

    Merci!
     
  8. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    792
    J'aime reçus:
    0
    mais cela oblige toujours à ajouter une nouvelle catégorie manuellement dans le code.

    ceci dit, je n'ai pas mieux.
     
  9. dabal10
    dabal10 Nouveau WRInaute
    Inscrit:
    25 Octobre 2007
    Messages:
    5
    J'aime reçus:
    0
    Oui, mais les catégories sont fixes donc cela fera l'affaire.

    Merci.
     
  10. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 368
    J'aime reçus:
    2
    L'array de catégories peut être alimentée par une requête SQL :)
     
Chargement...
Similar Threads - requete Mysql classement Forum Date
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018
Requete mysql Développement d'un site Web ou d'une appli mobile 30 Mai 2017
Problème requête mysql Développement d'un site Web ou d'une appli mobile 1 Mars 2017
[php/mysql] Eviter de faire 20 requêtes pour un affichage Développement d'un site Web ou d'une appli mobile 19 Janvier 2016
Mysql requête imbriquée Développement d'un site Web ou d'une appli mobile 1 Octobre 2015
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
Question pour une requête MYSQL Développement d'un site Web ou d'une appli mobile 29 Mai 2013
Réunir 2 requêtes MySql Développement d'un site Web ou d'une appli mobile 22 Mai 2013
MySQL Help requête² Développement d'un site Web ou d'une appli mobile 12 Avril 2013
MySQL help requete Développement d'un site Web ou d'une appli mobile 6 Mars 2013
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice