Requête résultat aléatoire - SQL/NoSQL - Programmation
Marsh Posté le 03-08-2010 à 11:14:38
Essayes avec cette requête :
SELECT J1.NomJ FROM joueur J1 inner join resultat R1 ON J1.id = R1.j1
UNION SELECT J2.NomJ FROM joueur J2 inner join resultat R1 ON J2.id = R2.j2
ORDER BY R.id, J1.id, J2.if
Marsh Posté le 03-08-2010 à 12:42:01
SELECT J1.NomJ
FROM joueur J1 inner join resultat R1
ON J1.id = R1.j1
UNION
SELECT J2.NomJ
FROM joueur J2 inner join resultat R1
ON J2.id = R1.j2
Marche parfaitement rufo merci
Peux-tu m'expliquer le inner join on ?
Marsh Posté le 03-08-2010 à 12:46:46
Ah ben non en fait ça marche pas ...
J'avais viré le order car il me disait
"#1054 - Unknown column 'R.id' in 'order clause'"
(j'ai par contre modifié J2.if en J2.id)
Marsh Posté le 03-08-2010 à 14:03:12
Pardon, R1 pas R dans le order by :
SELECT J1.NomJ FROM joueur J1 inner join resultat R1 ON J1.id = R1.j1
UNION SELECT J2.NomJ FROM joueur J2 inner join resultat R1 ON J2.id = R2.j2
ORDER BY R1.id, J1.id, J2.id
http://dev.mysql.com/doc/refman/5.0/fr/union.html
Marsh Posté le 03-08-2010 à 15:21:42
erreur une petite erreur :
#1054 - Unknown column 'R2.j2' in 'on clause'
et si je remplace R2.j2 par R1.j2
j'obtiens
#1054 - Unknown column 'R1.id' in 'order clause'
Marsh Posté le 03-08-2010 à 15:37:46
au fait, inner join, ça la méthode normale pour faire des équi-jointures. Mais souvent les profs nous font faire les équi-jointures dans le where
Marsh Posté le 03-08-2010 à 16:10:14
Bon, j'ai une solution :
Code :
|
Après, suivant la taille de ta BD, faudra sans doute adapter les nombres 1000, 100 et 300. Si t'as plus de 100 joueurs, faudra mettre 1000 à la place de 100 et 3000 à la place de 300, 10000 à la place de 1000.
Mais y'a peut-être mieux ou plus simple...
Marsh Posté le 03-08-2010 à 22:51:12
Héhé j'ai trouvé a peu de choses près la même requête que toi ! Ca me plaisait bien mais bon c'est vraiment crade je trouve et je suis persuadé qu'il y a une autre solution mais merci beaucoup, cela fonctionne
Marsh Posté le 04-08-2010 à 01:12:05
Hu hu hu, bon je précise que c'était juste pour essayer, je dis pas que ca va tout casser niveau performance!
SELECT j.nomJ |
Le CASE/WHEN/THEN/ELSE/END marche sous Oracle, je sais pas si c'est dans la norme SQL donc pas garanti pour d'autres SGBD m'enfin s'il n'y a pas exactement ca, il y aura un truc équivalent...
Marsh Posté le 04-08-2010 à 09:34:05
Le CASE existes aussi sous mysql.
Marsh Posté le 03-08-2010 à 09:59:13
Bonjour,
Je suis en train de réaliser une web-logiciel de gestion de tournois or j'ai un petit soucis avec une requête.
Voici un extrait de la table RESULTAT
Voici un extrait de la table JOUEUR
Je souhaiterais afficher le nom de joueurs dans l'ordre suivant
FEDERER
LUCZAK
TIPSAREVIC
FALLA
c'est à dire parcourir le champ J1 puis le champ J2 dans l'ordre croissant du champ num
Voici ma requête... qui ne fonctionne pas. En réalité elle fonctionne "un peu" mais dès que le nombre d'enregistrements est élevé, l'ordre d'affichage est aléatoire et change selon les rafraichissements ..
Merci