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 119
    J'aime reçus:
    317
  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 119
    J'aime reçus:
    317
    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 119
    J'aime reçus:
    317
    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 361
    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
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
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