Programmation en SQL

Programmation en SQL - SQL/NoSQL - Programmation

Marsh Posté le 07-01-2006 à 23:43:43    

Bonjour, et bonne année 2006!
 
Je travaille sur Oracle. Voilà je bute sur une question, si vous pouviez m'aider ce serait sympa...
[#f0ff00]
J'ai un schéma relationnel pour un cas de gestion du Tour de France.
Equipe(CodeEquipe, NomEquipe, DirecteurSportif)
Coureur(NumeroCoureur, NomCoureur, CodeEquipe*, CodePays*)
Pays(CodePays, NomPays)
Type_etape(CodeType, LibelléType)
Participer(NumeroCoureur, NumeroEtape, TempsRealise*)
Attribuer_bonification(NumeroEtape, km, Rang, NbSecondes, NumerCoureur*)
(les clés étrangèers sont marquées par *)
 
On me demande 1) quel est le coureur qui a remporté le plus d'étapes
et 2) le classement général des coureurs (nom, code équipe, code pays et temps des coureurs) sachant que les bonifications ont été intégrées dans les temps réalisés à chaque étape.
et la, .... je bloque pour les 2 questions
Merci si quelqu'un qui est compétent en bases de données et aussi qui connait bien le Tour de France peut m'aider !  
Pour moi les bonifications comptent seulement pour le classement général, (et donc n'interviennent pas dans la 1e question) le coureur ayant remporté le plus d'étapes est celui qui a fait le temps minimum dans un maximum d'étapes... mais alors pour le coder...
 
Merci bien
A+

Reply

Marsh Posté le 07-01-2006 à 23:43:43   

Reply

Marsh Posté le 08-01-2006 à 10:08:02    

pour la 1 ça doit etre un truc ainsi... A vérifier quand même
 
SELECT NumerCoureur
FROM Attribuer_bonification r1
WHERE Rang = 1
AND count(*) >= (SELECT count(*)
                         FROM Attribuer_bonification r2
                         WHERE Rang = 1
                         AND r1.NumerCoureur = r2.NumerCoureur)


Message édité par moi23372 le 08-01-2006 à 10:08:23
Reply

Marsh Posté le 08-01-2006 à 10:10:36    

bien que la 2 ne m'inspire pas des masses:
 
SELECT NumeroCoureur, sum(nbSecondes)
FROM Attribuer_bonification
GROUP BY NumeroCoureur
ORDER BY 2;

Reply

Marsh Posté le 12-01-2006 à 19:26:09    

Bonjour, moi aussi je travaille sur le même schéma relationnelle.  
Mais, je ne suis pas tout à fait d'accord sur les réponses car pour moi dans la table ATTRIBUER_BONIFICATION, le rang n'est pas le classement de l'étape mais le rang du sprint à un certain km d'une étape et comptant pour l'attribution de temps bonificateur.  
Donc j'aimerai savoir si il y a d'autre réponse possible pour les mêmes questions en sachant cette hypothése et j'ai aussi deux autres questions :  
- le coureur qui a remporté le plus d'étapes de Haute Montagne
- Le trigger qui, à chaque fois qu'une bonification est intégrée dans la base, recalcule le temps réalisé et met donc à jour la table PARTICIPE
 
Merci beaucoup pour votre aide.
 

Reply

Marsh Posté le 14-01-2006 à 12:35:41    


Bonjour, qu'est-ce que tu fais comme formation ?

Reply

Marsh Posté le 14-01-2006 à 13:27:41    

oui je euis un peu de ton avis, j'ai fait ça pour avoir la liste des vainqueurs de chaque étpae, mais ensuite je sais pas torp comment faire.
 
select NumeroEtape, NumeroCoureur from participer where TempsRealise IN (select min(TempsRealise) from participer GROUP BY NumeroEtape) GROUP BY NumeroEtape;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed