Requete sql
miniJulie
-
miniJulie -
miniJulie -
Bonjour, A tous
j'ai un exercice très long et j'ai presque tout trouver sauf une derniere requete...
si vous pouviez m'aider :
Trouver les noms et numéros de carte des inscrits qui participent à (au moins) un cours auquel participe Bonnard
schéma :
COURS(NomCours,Enseignant,Niveau)
INSCRIT(Nocarte,Nom,Age,Sexe)
PLANNING(NomCours,Jour,Lieu,Heure)
PATICIPATION(Nocarte,NomCours)
merci d'avance pour votre aide...cette question m'aura fait transpiré
j'ai un exercice très long et j'ai presque tout trouver sauf une derniere requete...
si vous pouviez m'aider :
Trouver les noms et numéros de carte des inscrits qui participent à (au moins) un cours auquel participe Bonnard
schéma :
COURS(NomCours,Enseignant,Niveau)
INSCRIT(Nocarte,Nom,Age,Sexe)
PLANNING(NomCours,Jour,Lieu,Heure)
PATICIPATION(Nocarte,NomCours)
merci d'avance pour votre aide...cette question m'aura fait transpiré
A voir également:
- Requete sql
- Logiciel sql - Télécharger - Bases de données
- Sql (+) - Forum Programmation
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Erreur de requete facebook - Forum Facebook
37 réponses
SELECT NoCarte, Nom
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard';
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard';
j'avais tenté ça :
SELECT INSCRIT .Nocarte, Nom FROM PARTICIPATION, INSCRIT as R ,INSCRIT, PARTICIPATION AS P Where Nom=' Bonnard' and PARTICIPATION.Nocarte= R. Nocarte and R.NomCours= INSCRIT. NomCours INSCRIT. Nocarte= P. Nocarte
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SELECT NoCarte, Nom, SUM(NomCours) AS Nombre
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING Nombre > 1;
Tu affiches les noms et numéros de carte des inscrits puis tu compte le nombre de cours effectués par bonnard dans le select
Ensuite tu prends les 3 tables suivantes pour pouvoir relié les infos.
Puis dans le where tu réalise les relations entre les 3 tables, tu affecte bonnard à Nom vu que c'est de lui que tu veux avoir les infos.
Et enfin ds le having, tu regarde si le nombre de cours est bien supérieur à 1.
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING Nombre > 1;
Tu affiches les noms et numéros de carte des inscrits puis tu compte le nombre de cours effectués par bonnard dans le select
Ensuite tu prends les 3 tables suivantes pour pouvoir relié les infos.
Puis dans le where tu réalise les relations entre les 3 tables, tu affecte bonnard à Nom vu que c'est de lui que tu veux avoir les infos.
Et enfin ds le having, tu regarde si le nombre de cours est bien supérieur à 1.
Alors tu as plusieurs erreur dans ta requête :
Dans ton FROM tu met deux fois la même table.
Je pense que tu as fais sa pour les alias mais tu peux mettre directement :
Ce qui te permet d'utiliser C au lieu de Cours dans tes jointures
Ensuite tu veux savoir qui as participer a au moins 1 cours de Bonnard,
donc tu as besoin de la table participation, cours, et inscrit, et ensuite il te reste plus qu'a faire les jointures correspondantes.
Je sais pas si je suis bien claire, mais de toute façon tu as la requête de Baboun toute prête
Dans ton FROM tu met deux fois la même table.
Je pense que tu as fais sa pour les alias mais tu peux mettre directement :
FROM COURS C, INSCRIT I, PARTICIPATION P
Ce qui te permet d'utiliser C au lieu de Cours dans tes jointures
Ensuite tu veux savoir qui as participer a au moins 1 cours de Bonnard,
donc tu as besoin de la table participation, cours, et inscrit, et ensuite il te reste plus qu'a faire les jointures correspondantes.
Je sais pas si je suis bien claire, mais de toute façon tu as la requête de Baboun toute prête
Merci bien mais j'ai ces erreurs là :
Msg 207, Niveau 16, État 1, Ligne 6
Nom de colonne non valide : 'Nombre'.
Msg 4104, Niveau 16, État 1, Ligne 6
L'identificateur en plusieurs parties "Inscrit.Nocarte" ne peut pas être lié.
Msg 209, Niveau 16, État 1, Ligne 1
Nom de colonne 'NomCours' ambigu.
Msg 207, Niveau 16, État 1, Ligne 6
Nom de colonne non valide : 'Nombre'.
Msg 4104, Niveau 16, État 1, Ligne 6
L'identificateur en plusieurs parties "Inscrit.Nocarte" ne peut pas être lié.
Msg 209, Niveau 16, État 1, Ligne 1
Nom de colonne 'NomCours' ambigu.
Merci bien à toi de m'expliquer...mais sa requete ne marche pas lorsque je l'exécute...
regarde au dessus j'ai posté les erreurs
regarde au dessus j'ai posté les erreurs
NomCours ambigu c'est normal étant donné qu'il est présent dans plusieurs table donc tu dois spécifier dans quelle table tu va le chercher :
Essayes de mettre directement dans ton Having sa :
Partcipation.NomCours
Essayes de mettre directement dans ton Having sa :
SUM(NomCours) > 1
SELECT I.NoCarte, Nom, SUM(C.NomCours)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING ((SUM(C.NomCours) > 1));
essaye ça
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING ((SUM(C.NomCours) > 1));
essaye ça
j'ai ça :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
Essayes plutôt count que sum !
parce que la il essaye de faire la somme de tes cours,
exemple :
informatique + mathematiques = ????
parce que la il essaye de faire la somme de tes cours,
exemple :
informatique + mathematiques = ????
Oui je suis bête^^
SELECT I.NoCarte, Nom, COUNT(I.NoCarte)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte) )> 1)));
Ca devrait être pas mal ça je pense
SELECT I.NoCarte, Nom, COUNT(I.NoCarte)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte) )> 1)));
Ca devrait être pas mal ça je pense
Mdr merci bien à toi mais encore une erreur lol
Msg 102, Niveau 15, État 1, Ligne 6
Syntaxe incorrecte vers ')'.
j'ai essayé d'en enlever et tout mais non lol
Msg 102, Niveau 15, État 1, Ligne 6
Syntaxe incorrecte vers ')'.
j'ai essayé d'en enlever et tout mais non lol
ah attend il y en avait une de fermé en trop...
maintenant j'ai ça :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
maintenant j'ai ça :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
SELECT I.NoCarte, Nom, COUNT(I.NoCarte)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte) )> 1));
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte) )> 1));
idem erreur :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
Avec la mienne ça devrai marcher^^
SELECT I.NoCarte, Nom, COUNT(I.NoCarte)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte)> 1)));
SELECT I.NoCarte, Nom, COUNT(I.NoCarte)
FROM COURS C, INSCRIT I, PARTICIPATION P
WHERE C.NomCours = P.NomCours
AND I.NoCarte = P.NoCarte
AND Nom ='Bonnard'
HAVING (((SUM(I.NoCarte)> 1)));
En remplaçant le SUM par le COUNT j'ai ça :
Msg 8120, Niveau 16, État 1, Ligne 1
La colonne 'INSCRIT.Nocarte' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
sinon en le laissant :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.
Msg 8120, Niveau 16, État 1, Ligne 1
La colonne 'INSCRIT.Nocarte' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
sinon en le laissant :
Msg 8117, Niveau 16, État 1, Ligne 1
Le type de données de l'opérande char n'est pas valide pour l'opérateur sum.