[Aide compréhension de jointure] - SQL/NoSQL - Programmation
Marsh Posté le 24-01-2015 à 20:17:40
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
Marsh Posté le 26-01-2015 à 11:17:46
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
Ok pour la requête de bianchi69, mais tu peux la raccourcir un peu en utilisant les alias de tables
Marsh Posté le 26-01-2015 à 17:58:15
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 * ?
Marsh Posté le 27-01-2015 à 10:43:24
En quelque sorte mais attention, c'est pas pareil que DISTINCT.
Tiens, tout sur le group by : http://cedric-duprez.developpez.co [...] -group-by/
Marsh Posté le 28-01-2015 à 15:28:40
Merci, sinon ma requête est bonne?
Marsh Posté le 28-01-2015 à 15:33:38
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
Marsh Posté le 23-01-2015 à 16:14:16
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