Choix aléatoire dans ma bdd
Résolu
Lucryio
Messages postés
224
Statut
Membre
-
Lucryio Messages postés 224 Statut Membre -
Lucryio Messages postés 224 Statut Membre -
Bonjour,
Je viens vers vous afin d'obtenir de l'aide, je m’explique :
J'aimerais faire une sélection de 10 entrées dans ma table mais que ces 10 entrées soit différente.
Par exemple, j'ai 100 entrées "A" 100 entrées "B" 100 entrées "C"
J'aimerais en sélectionner 10 parmi les 300 entrées.
Ma requête :
Fonctionne SAUF qu'elle me sélectionné 10 entrées soit de A, B ou C, hors moi j'aimerais, par exemple, qu'elle me choisisse 3 "A", 4 "B" et 3 "C".
Comment je pourrais faire pour que la sélection se fasse comme je le souhaiterais ?
Merci par avance pour votre aide.
Je viens vers vous afin d'obtenir de l'aide, je m’explique :
J'aimerais faire une sélection de 10 entrées dans ma table mais que ces 10 entrées soit différente.
Par exemple, j'ai 100 entrées "A" 100 entrées "B" 100 entrées "C"
J'aimerais en sélectionner 10 parmi les 300 entrées.
Ma requête :
$sql45 = $bdd->query("SELECT * FROM herbe_normal WHERE map='Route001' AND periode='jour' RAND()");
Fonctionne SAUF qu'elle me sélectionné 10 entrées soit de A, B ou C, hors moi j'aimerais, par exemple, qu'elle me choisisse 3 "A", 4 "B" et 3 "C".
Comment je pourrais faire pour que la sélection se fasse comme je le souhaiterais ?
Merci par avance pour votre aide.
1 réponse
Bonjour,
Visiblement ta requête ne contient pas une instruction ORDER BY....
Sachant que pour tester tes requêtes .... tu dois le faire directement dans ta BDD (via phpmyadmin par exemple) et non via ton code php.
ça te permet de te rendre compte plus facilement du résultat et des éventuelles erreurs...
Donc essaye :
Tu peux aussi le faire en utilisant des jointures..
https://www.mysqltutorial.org/mysql-tips/select-random-records-in-database-table/
.
Cordialement,
Jordane
Visiblement ta requête ne contient pas une instruction ORDER BY....
Sachant que pour tester tes requêtes .... tu dois le faire directement dans ta BDD (via phpmyadmin par exemple) et non via ton code php.
ça te permet de te rendre compte plus facilement du résultat et des éventuelles erreurs...
Donc essaye :
SELECT * FROM herbe_normal WHERE map='Route001' AND periode='jour' ORDER BY RAND() LIMIT 10
Tu peux aussi le faire en utilisant des jointures..
https://www.mysqltutorial.org/mysql-tips/select-random-records-in-database-table/
.
Cordialement,
Jordane
Si je fait comme tu as mis, j'ai 10 entrées de la même catégorie du coup hors, je souhaiterais que les 3 catégorie soit mélangé, tu aurais une idée ?
Après... sans connaitre la strucure de ta table ni disposer des données ... je ne peux pas tester.
Mais dis moi... as tu testé aussi avec les jointures du lien que je t'ai donné ??
les jointures, pas besoin puisque toutes les infos sont dans la même table.
les données de ma table :
-ID(ai, primary)
-no
-nom
-type
-type2
-map
-periode
L'ID correspond à l'auto-incrrément
le no correspond au numèro du pokemon (pour afficher son image)
Donc, moi, je souhaiterais que ma requête selectionne 20 pokemon de cette table mais ci-possible qu'ils soient pas tous identiques.
Tu as une idée ?
Lis et tu comprrendras... enfin... normalement ....
Souci, les 20 résultats je les enregistres dans une table mais là, il me prend qu'un seul resultat et m'enregistre donc 20 fois le même poke et non les 20 entrées séléctionné.
Voici mon for pour enregistrer les 20 entrées :
Pour info, toutes les données ne sont pas Identique SAUF le no et le nom qui sont identique.
une idée pour remédier à ce souci ?