Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2133 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Besoin d'aide pour une requete MySQL un peu spéciale (SELECT)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour une requete MySQL un peu spéciale (SELECT)

n°413259
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 16:19:05  profilanswer
 

Bonjour à tous,
 
J'ai besoin d'aide pour effectuer une requête MySQL
 
Voici la table "joueurs" :
 


ID |  NOM  | ELIM | CHOIX
---+-------+------+------
 0 | NOM 1 |  0   |  4
 1 | NOM 2 |  1   |  3
 2 | NOM 3 |  0   |  4
 3 | NOM 4 |  0   |  2
 4 | NOM 5 |  0   |  2
 5 | NOM 6 |  1   |  1


 
La requete que j'aimerais faire est la suivante :
 
Selectionnez NOM depuis la table JOUEURS là où CHOIX à la valeur minimum et ou ELIM est égal à 0 et les classer aléatoirement
 
Pour le moment j'arrive à ça :
SELECT NOM FROM joueurs WHERE ELIM=0 ORDER BY rand()
 
Le seul pb est la partie "où CHOIX à la valeur minimum" ... dans l'expemple présent, j'aimerais qu'il me séléctionne les nom "NOM 4" et "NOM 5"...
 
Qqn peut il m'aider ?
 
Merci bcp...


Message édité par Dj YeLL le 02-06-2003 à 16:19:56

---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le 02-06-2003 à 16:19:05  profilanswer
 

n°413264
El_gringo
Posté le 02-06-2003 à 16:28:02  profilanswer
 

J'dirais ça :
SELECT NOM FROM (
   SELECT NOM, MIN (CHOIX) minChx from JOUEURS j where ELIM=0;
) where CHOIX = j.minChx ORDER BY rand();
à essayer.
 
EDIT : c peut être une pure connerie.


Message édité par El_gringo le 02-06-2003 à 16:30:00
n°413265
urd-sama
waste of space
Posté le 02-06-2003 à 16:29:33  profilanswer
 

et non, pas en mysql  :D


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
n°413276
docwario
Alea jacta est
Posté le 02-06-2003 à 16:41:16  profilanswer
 

perso je dirais :
 
SELECT NOM FROM joueurs WHERE ELIM=0 AND CHOIX=(select min(choix) from joueurs) ORDER BY rand()  

n°413285
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 16:47:49  profilanswer
 

Ca ne marche pas :( :
 

Erreur MySQL numéro: 1064 (Something is wrong in your syntax près de 'SELECT MIN(CHOIX) FROM joueurs) ORDER BY rand()' à la ligne 1)


Message édité par Dj YeLL le 02-06-2003 à 16:51:57

---------------
Gamertag: CoteBlack YeLL
n°413290
docwario
Alea jacta est
Posté le 02-06-2003 à 16:49:25  profilanswer
 

scusi c :
 
SELECT NOM FROM joueurs WHERE ELIM=0 AND CHOIX IN (select min(choix) from joueurs) ORDER BY rand()

n°413296
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 16:51:23  profilanswer
 

Ca me donne tjs ça :
 

Erreur MySQL numéro: 1064 (Something is wrong in your syntax près de 'SELECT MIN(CHOIX) FROM joueurs) ORDER BY rand()' à la ligne 1)


 
 
:( :'(


---------------
Gamertag: CoteBlack YeLL
n°413303
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 02-06-2003 à 16:55:16  profilanswer
 

Info : MySQL ne supporte pas encore les sous-requêtes.
Merci de votre participation à tous :jap:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°413308
skeye
Posté le 02-06-2003 à 16:58:10  profilanswer
 

Taiche a écrit :

Info : MySQL ne supporte pas encore les sous-requêtes.
Merci de votre participation à tous :jap:


Il faut passer par des tables temporaires quand on veut faire ca? :heink:

n°413309
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 16:58:14  profilanswer
 

Je devrais peut etre faire un truc du genre :
 

$query = "SELECT MIN(CHOIX) FROM joueurs WHERE ELIM=0";
$i = mysql_db_query('mabase', $query);
$query2 = "SELECT NOM FROM joueurs WHERE ELIM=0 AND CHOIX=$i";
$result = mysql_db_query('mabase', $query2);


 
 
?


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le 02-06-2003 à 16:58:14  profilanswer
 

n°413320
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 02-06-2003 à 17:04:36  profilanswer
 

Presque (dans ton bout de code, $i sera un tableau donc ça marchera pas pile poil, faudra faire un mysql_fetch_array par exemple). Tu peux aussi faire une seule requête du genre SELECT * FROM matable WHERE ELIM=0
Puis à partir du tableau retourné, faire directement en PHP la récupération du min.
Y a plusieurs solutions, tout dépend de ce que tu préfères : faire une connexion supplémentaire à ta base ou faire mouliner ton CPU lors du parsing du PHP.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°413389
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 17:33:56  profilanswer
 

Pfff ! J'y arrive pas ... c'est dingue qu'il n'y ait meme pas une fonction ds MySQL qui permet de selectionner une valeur en fonction de la plus petites valeur d'une colonne ... :(
 
Je vais essayer de me débrouiller autrement...
 
Merci à tous
 
++


---------------
Gamertag: CoteBlack YeLL
n°413392
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 17:37:42  profilanswer
 

Je viens d'avoir une autre idée ... je peux faire un SELECT sur la table, et faire un SORT BY CHOIX ... sélectionner la 1ere valeur (qui sera forcement la minimale) puis faire un SELECT avec WHERE CHOIX = la valeur trouvé prédédement ...
 
Mais c bien chiant :/


---------------
Gamertag: CoteBlack YeLL
n°413393
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 17:39:39  profilanswer
 

Sinon, je tourne en local ... il me semble que la derniere version de MySQL accepte les requetes imbriquées non ?
 
Si tel est le cas, je pourrais peut etre faire une mise à jour ...


---------------
Gamertag: CoteBlack YeLL
n°413396
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 02-06-2003 à 17:43:33  profilanswer
 

Dj YeLL a écrit :

Sinon, je tourne en local ... il me semble que la derniere version de MySQL accepte les requetes imbriquées non ?
 
Si tel est le cas, je pourrais peut etre faire une mise à jour ...


Vérifie quand même sur le site de MySQL. Je crois que c'est à partir de la version 4 que c'est possible et c'est pas encore la version stable, donc fais gaffe.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°413413
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 17:53:42  profilanswer
 

Bon, d'apres le site MySQL, c'est a partir de la 4.1alpha
 
Je suis en train de la telecharger ... mais obn, j'utilise EasyPHP, et ça m'etonnerait pas que ça merde apres la mise a jour ...
 
On verra bien
 
++


---------------
Gamertag: CoteBlack YeLL
n°413417
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 02-06-2003 à 17:59:14  profilanswer
 

Faut toujours s'habituer à faire des installs soi-même sans passer par un package (dans la mesure du possible, hein) [:spamafote]
PHP s'installe facilement tout seul, MySQL itou. Faut juste savoir lire les install.txt ou readme.txt ; pas besoin d'EasyPHP.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°413428
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 18:10:05  profilanswer
 

Je sais bien :)
 
En + c'est vraiment le seul truc pour lekel j'utilise un package... Je suis contre les pack en général, mais j'ai jamais eu à me plaindre de EasyPhp... et c'est tellement plus rapide.
 
Mais j'essayerais de faire une install manuelle quand j'aurais le tps (ou si la màj ne marche pas)
 
Merci
 
++


---------------
Gamertag: CoteBlack YeLL
n°413442
Dj YeLL
$question = $to_be || !$to_be;
Posté le 02-06-2003 à 18:44:45  profilanswer
 

Voila, j'ai installé la v4.1a et ça marche a peu pres ... en fait EasyPHP n'arrive plus a le lancer et me met une erreur, mais si je le lance manuellement ça marche :) Je ferais une installe manuelle toute propre quand j'aurais + de tps ... la je fini le taff à 19h.
 
Bon, sinon je viens d'essayer la requete imbriquée et ça marche nickel !! Exactement comme je le voulais.
 
Alors merci @ tous :)


---------------
Gamertag: CoteBlack YeLL
n°413450
the real m​oins moins
Posté le 02-06-2003 à 19:14:43  profilanswer
 

skeye a écrit :


Il faut passer par des tables temporaires quand on veut faire ca? :heink:  

il faut passer par un data model correct :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°413498
MagicBuzz
Posté le 02-06-2003 à 20:07:14  profilanswer
 

Il faut utiliser having :
 


select v1.note, v1.u_login
from vote v1, vote v2
group by v1.note, v1.u_login
having v1.note = min(v2.note)


 
Appelez-moi dieu :ange:

n°413503
MagicBuzz
Posté le 02-06-2003 à 20:09:26  profilanswer
 

La requête exacte :
 

select j1.nom
from joueurs j1, joueurs j2
where j1.choix = 0
and j2.choix = 0
group by j1.elim, v1.nom
having v1.elim = min(v2.elim)


Message édité par MagicBuzz le 02-06-2003 à 20:10:12
n°418338
Elderion
Posté le 05-06-2003 à 20:11:20  profilanswer
 

tout a fé daccord sur le MIN()  :D

n°418399
bascarol
Posté le 05-06-2003 à 20:50:06  profilanswer
 

MagicBuzz a écrit :

Il faut utiliser having :
 


select v1.note, v1.u_login
from vote v1, vote v2
group by v1.note, v1.u_login
having v1.note = min(v2.note)


 
Appelez-moi dieu :ange:


 
having existe sous MySQL?
 


---------------

n°418407
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 05-06-2003 à 20:52:56  profilanswer
 

Bon, c'est fini ces remontées de vieux topic ? :o
 

bascarol a écrit :


having existe sous MySQL?


http://www.mysql.com/documentation [...] #Reference


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°418549
bascarol
Posté le 05-06-2003 à 22:03:43  profilanswer
 


 
merci


---------------

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Besoin d'aide pour une requete MySQL un peu spéciale (SELECT)

 

Sujets relatifs
site pour les commandes php/mysql[ASP-SQL] pb requete...........
[PHP/mySQL] Consulter un site PHP en localProbleme d'optimisation [php/mysql]
MySQL -> SQL ... petite question... [résolu][PHP / MYSQL] comparer simplement 2 dates au format datetime
[PHP - MYSQL] Sauvegarder uen image dans un champ de la bdaffichage de donné stocké ds une base de donnée mysql
Select *from $table where ...requete somme dans access
Plus de sujets relatifs à : Besoin d'aide pour une requete MySQL un peu spéciale (SELECT)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR