|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Docteur en informatique Inscription : novembre 2006 Messages : 124 ![]() |
Bonjour à tous
Je ramène ici mon plus gros problème à un problème plus basique. L'idée est d'extraire d'une table représentant des notes pour des concours le 1er, 2nd, etc de chaque concours. Soit une table "concours", comprenant les champs "votant_id", "participant_id", "concours_id" et "note", représentant respectivement les identifiants des votants, l'identifiant du participant au concours, l'identifiant du concours auquel le participant participe, et la note donnée par le votant. Il est ainsi possible et facile d'obtenir le nombre total de points pour chaque utilisateur : Code :
Avez-vous une idée de la manière de faire ? Pierre |
||
|
|
00
|
|
|
#2 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Avec quel SGBD ? quelle version ?
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Docteur en informatique Inscription : novembre 2006 Messages : 124 ![]() |
Bonjour
J'utilise MySQL 5.5.8. Pierre |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Meme genre de probleme que dans ce post
Une autojointure et un count devrait vous permettre de vous en sortir. Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
10
|
|
|
#5 | ||||||||
|
Membre du Club
![]() Docteur en informatique Inscription : novembre 2006 Messages : 124 ![]() |
Citation:
J'oublie la notion de "concours_id" pour le moment. Si j'ai bien compris le principe, je dois faire une autojointure avec la table Code :
Code :
J'ai en effet l'erreur suivante : Citation:
Edit : J'ai réussi grâce à une fourberie. Je fais un Code :
Merci encore ! Pierre |
||||||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Vous n'avez pas fait de fourberie, vous avez simplement trouvé la solution. Il fallait effectivement passer par une sous requete dans votre cas.
![]() Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Si cela répond a votre probleme, n'oubliez pas le bouton "résolu"
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Docteur en informatique Inscription : novembre 2006 Messages : 124 ![]() |
Rebonjour
J'ai "dérésolu" ce sujet, car je viens de m'apercevoir d'une petite erreur. En effet, l'autojointure consiste à dire "combien existe-t-il de candidats qui ont une note supérieure ou égale à la mienne ?". Or, si la table contient les notes (20,10,10,5), on aura les places associées (1,3,3,4). Et ceci car 20, 10 et 10 sont supérieurs ou égaux à 10. Je préfèrerai avoir (1,2,2,4). J'ai tenté de supprimer le "ou égal" du >=, cependant je perds le 1er, car personne n'est au dessus du 1er. Avez-vous une esquisse de solution ? Pierre |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut,
- Enlève le =, c'est bien - Ouvre la jointure (LEFT OUTER JOIN) - Remplace count(*) par count(*) + 1 [EDIT] Ah, il faut peut être faire COALESCE(count(*), 0) + 1 cela dit
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
10
|
|
|
#10 | |
|
Membre du Club
![]() Docteur en informatique Inscription : novembre 2006 Messages : 124 ![]() |
Citation:
Merci beaucoup ! Il fallait mettre un COUNT(z), où z est une colonne pouvant prendre NULL en cas de défaut lors de la jointure LEFT OUTER. Pierre |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com