IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Soustraction avec 2 sous-requêtes


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 Images attachées  

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 975
    Points
    52 975
    Billets dans le blog
    6
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 +

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de votre réponse.

    Finalement je n'ai pas utilisé de sous requête, j'ai tout regroupé en une :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Cela serait judicieux d'utiliser la norme (utilisé depuis plus de 20 ans) pour l'écriture des jointures

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2008, 09h59
  2. Check avec une sous-requête
    Par Neal Morse dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 22/03/2008, 22h31
  3. Problème avec des sous requêtes
    Par nicocolt dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/10/2007, 15h19
  4. Ordonner avec une sous requête ,possible ou pas?
    Par worm1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/02/2007, 06h23
  5. Update avec une sous requête
    Par Deejoh dans le forum Installation
    Réponses: 7
    Dernier message: 25/01/2006, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo