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 10/11/2011, 15h32   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Soustraction avec 2 sous-requêtes

Bonjour à tous, je suis novice en matière de requête sql, et je cale sur la requête d'un TD (oui je suis étudiant).

Voici la requête : Liste des enseignants qui ont enseigné moins d’heures que prévu en octobre 2011.

J'ai fait 2 sous requêtes qui affichent le nombre d'heures prévues, et le nombre d'heures effectuées. Je dois maintenant faire la soustraction (heures prévues - heures effectuées), et n'afficher que les résultats positifs.

C'est donc pour cette requête que j'ai besoin de votre aide !

Voici à quoi ressemble une de mes sous requêtes :

Code :
1
2
3
4
5
SELECT DISTINCT nom, sum(previsions.duree) AS nb_heures_prevues
FROM intervenants, previsions
WHERE intervenants.intervenantid=previsions.intervenant
AND previsions.jour BETWEEN #10/1/2011# And #10/31/2011#
GROUP BY nom
Les tables sont en pièce jointe.

Merci d'avance.
Images attachées
Type de fichier : jpg tables tp bd.JPG (164,8 Ko, 13 affichages)
shadowblink est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 17h12   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Vous pouvez par exemple faire une jointure sur le prof entre vos deux sous requête et faire la soustration dans la clause WHERE.

Quelque chose de la forme :

Code :
1
2
3
4
5
SELECT T1.prof
FROM (ma première sous requête) AS T1
       INNER JOIN (ma seconde sous requête) AS T2
             ON T1.??? = T2.???
WHERE T1.Nb_heure > T2.NB_heure
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 17h55   #3
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 0
Points : 0
Merci de votre réponse.

Finalement je n'ai pas utilisé de sous requête, j'ai tout regroupé en une :
Code sql :
1
2
3
4
5
6
7
8
9
10
SELECT nom
FROM intervenants, previsions, realisations, durees AS duree_previsions, durees AS duree_realisations
WHERE intervenants.intervenantid=previsions.intervenant
AND intervenants.intervenantid=realisations.intervenant
AND previsions.jour BETWEEN #2011/10/01# And #2011/10/31#
AND realisations.jour BETWEEN #2011/10/01# And #2011/10/31#
AND duree_previsions.dureeid=previsions.duree
AND duree_realisations.dureeid=realisations.duree
GROUP BY nom
HAVING sum(duree_previsions.nombreheure)>sum(duree_realisations.nombreheure)

A priori, ça a l'air de fonctionner !

Cordialement.
shadowblink est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 21h12   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Cela serait judicieux d'utiliser la norme (utilisé depuis plus de 20 ans) pour l'écriture des jointures
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h35.


 
 
 
 
Partenaires

Hébergement Web