Aide mois probleme au requete sql

ouidad02 Messages postés 46 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 5 octobre 2011 - 3 févr. 2011 à 13:29
ouidad02 Messages postés 46 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 5 octobre 2011 - 4 févr. 2011 à 17:40
salut a tous je suis entrain de travailler sur une application client/serveur mais je trouve un problème qui m'arrête j'ai 5 table les suivant:
candidat(cin,nom,ville,#codedip)
diplome(codedip,nom,niveau)
specialite(codesp,titre,#codedip)
filiere(codef,titref,#codesp)
ufr(codeufr,titreufr,#codef)
je cherche comment afficher les spécialité de chaque diplôme et les filière de chaque spécialité,et les ufr de chaque filière et le comptage des candidat sans répétition
voila mon code mai il me donne la répétition (seulement pour l'affichage sans comptage)

SELECT dbo.diplome_preparer.codedipprep, dbo.diplome_preparer.niveau,
dbo.SPECIALITE.CODESP, dbo.filiere.CODEFILIERE, dbo.UFR.TITREUFR
FROM dbo.diplome_preparer, dbo.SPECIALITE,dbo.UFR, dbo.filiere
where dbo.diplome_preparer.codedipprep = dbo.SPECIALITE.codedipprep
and dbo.SPECIALITE.CODESP = dbo.filiere.CODESP
and dbo.filiere.CODEFILIERE = dbo.UFR.CODEFILIERE

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
3 févr. 2011 à 15:34
salut,

Un truc du genre, mais l'odre du group by est important
il faut aller du plus gros au plus petit.

L'ordre des jointure est important, mon ordre est surement pas correct
mais il est préférable de mettre des jointures inner à la place de conditions de le where (plus optimiser et facile à lire et maintenir)

SELECT count(candidat_id),  
dbo.diplome.nom,
dbo.filiere.CODEFILIERE, 
dbo.UFR.TITREUFR
FROM dbo.diplome_preparer 
inner join dbo.SPECIALITE 
      on dbo.diplome_preparer.codedipprep = dbo.SPECIALITE.codedipprep
INNER JOIN dbo.filiere
      on dbo.SPECIALITE.CODESP = dbo.filiere.CODESP
INNER JOIN dbo.UFR
      on dbo.filiere.CODEFILIERE = dbo.UFR.CODEFILIERE
INNER JOIN dbo.candidat
      on dbo.candidat.codedip = specialite.codedip
INNER JOIN diplome
      on diplome_preparer.iddiplome = diplome.iddiplome

group by 
dbo.diplome.nom,
dbo.filiere.CODEFILIERE, 
dbo.UFR.TITREUFR



0
ouidad02 Messages postés 46 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 5 octobre 2011
3 févr. 2011 à 16:54
merci mai il m:e donne le meme resultat il m'affiche les filieres avec la specialite meme si n'est un filiere de cette specialit voila exemple
mas1>1 ARB>F1> ÇáÞæÇÚÏ ÇáÝÞåíÉ æÇáÃÕæáíÉ æÊØÈíÞÇÊåÇ Ýí ÇáÃÍßÇã æÇáäæÇÒá
mas1>1 ARB>F2>DIDACTIQUE DU FRANCAIS ET INTERCULTURALITE
mas1>1>ARB>F1 >ÇáÊäãíÉ ÇááÛæíÉ æÞÖÇíÇ ÇáãÕØáÍ ÇááÓÇäí ÇáÃÏÈí
mas1> 1 >ARB > F1> ÍæÇÑ ÇáËÞÇÝÇÊ Ýí ÇáËÞÇÝÉ ÇáÚÑÈíÉ ÇáÅÓáÇãíÉ
il m'affiche desfiliere de la specialite francaisd avec la specialité arabe et des ufr de la filiere f1 avec la filiere f2...
claire?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
3 févr. 2011 à 22:28
J'ai rien compris a ta réponse.


un autre exemple (non testé) mais plus simple a comprendre.
compte les etudiants par classe

on group par nom classe
on affiche le nom de la classe
et on compte le nombre d'etudiant
on fait une jointure sur classe pour connaitre le nom de la classe

en esperant que c'est plus clair

select count(etudiant), classe_nom
from etudiant inner join classe
on classe.classe_id = etudiant.class_id
group by classe_nom
0
Abdeloua1 Messages postés 16 Date d'inscription vendredi 14 janvier 2011 Statut Membre Dernière intervention 20 mai 2011
4 févr. 2011 à 12:44
est ce que vous pouvez expliquer bien ce que vous voulez faire ??
vous voulez que la requéte affiche quoi exactemnt?? je peut vous aider
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ouidad02 Messages postés 46 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 5 octobre 2011
4 févr. 2011 à 17:40
ère chose l'affiche de:
spécialité de chaque diplôme
filière de chaque spécialité
ufr de chaque filière

2eme chose il doit me donne le comptage des etudant filté par le résultat qui doit affiche

la requete que j'utilise il me donne la répétition des erreur par exemple
la spécialité arb ne contient par la filiere f1 mais il me donne que la filiere f1 est un filiere de specialite arb
j’espère d’être claire maintenant
0
Rejoignez-nous