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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Aide compréhension de jointure]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Aide compréhension de jointure]

n°2249173
SmXme
Posté le 23-01-2015 à 16:14:16  profilanswer
 

Bonjour,
Je suis actuellement en train d'apprendre le SQL et j'ai un  TP à faire.
Voici la structure de ma base:
 
PILOTE (idPilote, nom, prenom, dateDeNaissance, idPays)
idPilote : Clé primaire
idPays : Clé étrangère en référence à idPays de PAYS
 
PAYS (idPays, nomPays)
idPays : Clé primaire
 
COURSE (dateCourse, idPays)
dateCourse : Clé primaire
idPays : Clé étrangère en référence à idPays de PAYS
 
CLASSEMENT (idPilote, dateCourse, positionDep, positionArr)
idPilote, dateCourse : Clé primaire
idPilote : Clé étrangère en référence à idPilote de PILOTE
dateCourse : Clé étrangère en référence à dateCourse de COURSE
 
ECURIE (idEcurie, nomEcurie, dateCreation)
idEcurie : Clé primaire
ENGAGER (idEcurie, annee, idPilote)
idEcurie, annee, idPilote : Clé primaire
idEcurie : Clé étrangère en référence à idEcurie de ECURIE
idPilote : Clé étrangère en référence à idPilote de PILOTE
 
Je bloque beaucoup sur les jointures, je vois lorsque je dois m'en servir, mais je bloque sur la façon dont je dois le faire et sur la compréhension de celles-ci.
 
En gros, je dois récupérer le nombre de fois où un pilote (ici c'est JEAN ALESI)  est arrivé premier au long de sa carrière.
Je vois donc qu'il faut relier les tables PILOTE et CLASSEMENT par l'idPilote, mais j'ai du mal a voir le reste de la requête, je suis certain qu'il  faut un SELECT COUNT, qu'il faut aussi la condition WHERE nom = ALESI AND prenom= JEAN
 
Si quelqu'un pouvez me filer un petit coup de main sur les jointures et m'expliquer, ca serait sympa !
Merci beaucoup

mood
Publicité
Posté le 23-01-2015 à 16:14:16  profilanswer
 

n°2249269
bianchi69
cned bts sio SISR
Posté le 24-01-2015 à 20:17:40  profilanswer
 

Essayes ça :
 
SELECT COUNT(*) AS "Nombre de courses remportées par Jean ALESI"
FROM classement JOIN pilote ON classement.idpilote=pilote.idpilote
WHERE classement.positionarr=1 AND pilote.nom="ALESI" AND pilote.prenom="Jean"
GROUP BY pilote.nom, pilote.prenom;
 
 
J'utilise PGAdminIII.
 
Bon courage

n°2249345
rufo
Pas me confondre avec Lycos!
Posté le 26-01-2015 à 11:17:46  profilanswer
 

Citation :

En gros, je dois récupérer le nombre de fois où un pilote (ici c'est JEAN ALESI)  est arrivé premier au long de sa carrière.


la réponse est facile, c'est 0 :D
 
Ok pour la requête de bianchi69, mais tu peux la raccourcir un peu en utilisant les alias de tables ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2249411
SmXme
Posté le 26-01-2015 à 17:58:15  profilanswer
 

Alors, désolé de la réponse tardive.
Ma requête donne ceci :  
 
SELECT COUNT (positionArr)
FROM Classement c NATURAL JOIN Pilote p
WHERE nom = "ALESI"
AND prenom = "JEAN"
AND positionArr=1;
 
Le group by de ta requête, est fait pour enlever les doublons à cause du COUNT * ?

n°2249477
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2015 à 10:43:24  profilanswer
 

En quelque sorte mais attention, c'est pas pareil que DISTINCT.
 
Tiens, tout sur le group by : http://cedric-duprez.developpez.co [...] -group-by/


Message édité par rufo le 27-01-2015 à 10:43:34

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2249630
SmXme
Posté le 28-01-2015 à 15:28:40  profilanswer
 

Merci, sinon ma requête est bonne?


---------------
|i9 13900K | MSI Z690 Tomahawk WIFI DDR4 | 4*16Go G.SKILL Trident Z Neo 3600Mhz C16 | EVGA 3090Ti FTW3 Ultra | DeepCool LT720 | NZXT H7 FLOW|
n°2249632
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2015 à 15:33:38  profilanswer
 

J'aurais plutôt fait :
SELECT p.idPilote, COUNT (positionArr)
FROM Classement c NATURAL JOIN Pilote p
WHERE nom = "ALESI"
AND prenom = "JEAN"
AND positionArr=1
GROUP BY p.idPilote


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  [Aide compréhension de jointure]

 

Sujets relatifs
Aide programme java[réglé] [SQL] Jointure et variable du meme nom
Aide pour programme javaa l'aide pour un projet
Requête SQL jointure deux champs vers un même champC++ builder 6 et l'aide sur windows seven
Plus de sujets relatifs à : [Aide compréhension de jointure]


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