Bonjour à tous,
Voilà je suis en cours du soir au CNAM et je vais bientôt passer un examen sur les SGBD. Pour cela je m'entraine avec avec pas mal d'annales.
J'ai quelques souci avec deux requêtes :
1)Voilà l'énoncé du premier exercice:
Bateau (Num_Bat, NomB, Sponsor) ;
Course (Num_Cou, NomC, Date, Prix) ;
Resultat (Num_Bat, Num_Cou, Score) ;
Voici la question : Donner pour chaque nom de bateau, le nombre de ses participations à une course ?
Correction :
SELECT NomB, Count(*)
FROM Bateau B, Course C
WHERE B.Num_Bat = C.Num_Bat
GROUP BY NomB ;
Je ne comprend pas pourquoi il y a une jointure "B.Num_Bat = C.Num_Bat" alors que Num_Bat n'apparait même pas dans la table Course
Moi j'aurais mis cela :
SELECT NomB, Count(*)
FROM Bateau B, Course C, Resultat R
WHERE B.Num_Bat = R.Num_Bat
AND R.Num_Cou = C.Num_Cou
GROUP BY NomB ;
Please quelqu'un peu m'expliquer pourquoi j'ai faux ?
2)Voilà l'énoncé du deuxième exercice:
AEROPORTS (Code, Nom, Pays)
AVIONS (Ref, Type, Compagnie, NB_Passagers)
VOLS (Ref, Date_Depart, Depart, Arrivée, Date_Arrivée, Distance)
VOYAGEURS (ref_Client, Nom, Prenom, Nationalité, Kilométrage)
RESERVATIONS (ref, Date_Depart, Ref_client, Classe)
Voici ce que l'on nous demande : Donnez les pays de destination pour tous les départs de l'aéroports de code 'CDG' le 14 juillet 2008 ?
Voici la correction que l'on nous donne :
SELECT A.Pays
FROM VOLS V, AEROPORTS A,
WHERE V.Arrivee=A.Code
AND V.Depart='CDG'
AND V.Date_Depart>='2008-07-14 00:00:00'
AND V.Date Depart <'2008-07-15 00:00:00';
Ce que je ne comprend pas c'est comment on peu faire une jointure comme "V.Arrivee=A.Code" !! Je pensais que la jointure était uniquement entre deux attributs commun à deux table !!! Est-ce que quelqu'un peu m'expliquer
D'avance merci pour vos réponses et merci d'avoir pris le temps de m'expliquer
Message édité par doh-ko le 12-02-2010 à 14:19:34