Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2010, 22h18   #1
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Par défaut Problème requête SQL

Bonsoir,

J'ai une base de données dont le schéma relationnel est le suivant :
Citation:
 Chercheur [ CodeCh, NomCh, CodeEq* ]
 Laboratoire [ CodeLabo, Type, NomLabo, URL, CodeDir* ]
 Equipe [ CodeEq, NomEq, CodeResp*, CodeLabo* ]
 Theme [ CodeTh, Libelle ]
 Definir [ CodeEq*, CodeTh* ]
 Travailler [ CodeCh*, CodeTh* ]
Sachant que CodeDir et Code Resp font référence à la clé primaire CodeCh.

Je souhaiterais résoudre la requête :
"Nombre d’équipes ayant au moins cinq chercheurs"

Voilà un extrait de ce que j'ai pu trouver mais ceci ne marche pas, quelqu'un aurait une solution à me proposer ???

Code :
1
2
3
4
5
6
7
8
 
SELECT count(*)
FROM Equipe
WHERE CodeEq=(SELECT CodeEq
FROM Chercheur, Equipe
WHERE Chercheur.CodeEq=Equipe.CodeEq
GROUP BY (NomEq)
HAVING COUNT(*)>5);
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 00h13   #2
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 452
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 36
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2010
Messages : 452
Points : 1 012
Points : 1 012
Envoyer un message via Skype™ à Nudger
Bonsoir,

Ca devrait fonctionner:
Code :
1
2
3
4
5
SELECT Chercheur.CodeEq, count(*)
FROM Chercheur, Equipe
WHERE Chercheur.CodeEq=Equipe.CodeEq
GROUP BY (Chercheur.CodeEq)
HAVING COUNT(*)>5
__________________
www.nudge.org Surveillez et optimisez vos applications Java
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 08h41   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 959
Points : 18 180
Points : 18 180
Envoyer un message via MSN à CinePhil
Et avec la syntaxe normalisée depuis 1992 pour les jointures, c'est encore mieux !

Mais besoin n'est pas de lister les équipes mais d'avoir :
Citation:
"Nombre d’équipes ayant au moins cinq chercheurs"
Et comme le code équipe figure dans la table des chercheurs, inutile de faire la jointure avec la table des équipes.

Code :
1
2
3
4
5
6
7
SELECT COUNT(*) AS nb_equipes
FROM (
    SELECT CodeEq
    FROM Chercheur
    GROUP BY CodeEq
    HAVING COUNT(*) > 4
) tmp
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 12h09   #4
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Merci beaucoup pour vos infos mais je voudrai éalement un tout dernier renseignement.

Je souhaiterai également connaitre les Thèmes de recherche des directeurs d’équipe en indiquant le nom du chercheur, le nom de l’équipe et le nom des thèmes.
Mais je ne sais pas du tout comment m'y prendre
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 12h32   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 959
Points : 18 180
Points : 18 180
Envoyer un message via MSN à CinePhil
Il faut, là aussi, faire des jointures entre les tables et récupérer les colonnes dont tu as besoin.

Citation:
Thèmes de recherche des directeurs d’équipe en indiquant le nom du chercheur, le nom de l’équipe et le nom des thèmes.
Je pense que tu veux plutôt parler des responsables d'équipe ?

Ceci devrait répondre au besoin :
Code :
1
2
3
4
5
6
7
SELECT c.NomCh AS Nom_Chercheur, 
    e.NomEq AS Nom_Equipe, 
    th.Libelle AS Theme
FROM Theme AS th
INNER JOIN Travailler AS tr ON tr.CodeTh = th.CodeTh
    INNER JOIN Chercheur AS c ON c.CodeCh = tr.CodeCh
        INNER JOIN Equipe AS e ON e.CodeResp = c.CodeCh
Essaie de faire la prochaine toi-même à partir de ces exemples.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 14h00   #6
Nouveau Membre du Club
 
Inscription : juillet 2009
Messages : 147
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 147
Points : 29
Points : 29
Merci mais si je vous demande c'est que justement, on me demande de ne pas le faire avec des alias mais en requete simple !
Lenou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 14h18   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 959
Points : 18 180
Points : 18 180
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par Lenou Voir le message
on me demande de ne pas le faire avec des alias mais en requete simple !
Je ne comprends pas ce que tu veux dire !

Dans ma requête, il y a effectivement des alias, th, tr, c, e, pour éviter de répéter le nom des tables et ainsi d'alléger l'écriture et la lecture de la requête.
Ceci n'enlève rien à la simplicité de la requête, bien au contraire !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h25.


 
 
 
 
Partenaires

Hébergement Web