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 :

Relation entre 5 tables


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Points : 88
    Points
    88
    Par défaut Relation entre 5 tables
    Bonjour forum,

    Je suis un débutant qui aimerais avoir un peu d'aide sur un requête SQL,

    Au départ j'effectuais le lien dans la clause WHERE, mais j'avais moins de table et j'ai lu sur le forum afin d'optimiser ma requête je devrais faire les jointure via la clause FROM.

    Je vous envoie une image de mes tables en pièce jointe

    Je ne crois pas avoir besoin de LEFT ou RIGHT JOIN, le INNER JOIN devrait faire le travail. Pour les clause SELECT et WHERE je suis correct, j'ai seulement besoin d'aide pour la clause FROM.

    Merci d'avance de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2011
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 172
    Points : 88
    Points
    88
    Par défaut
    J'ai réussi, mais j'aimerais avoir vos commentaires, pour m'assurer que la syntaxe fait du sens.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strSQL = "SELECT Q.sonbralt, P.descr, sch.prodid, ps.descr , sch.prodstatusid2, sch.amount, sch.deliveryno, z.name, sch.schdate, sch.deliverydate, schwc.nbhours, C.fermes " & _
                "FROM ((((((workcenter w INNER JOIN rsscheduledtlwc schwc ON w.wcid = schwc.wcid) " & _
                "INNER JOIN rsscheduledtl sch ON schwc.rsschdtlid = sch.rsschdtlid) " & _
                "INNER JOIN QOHdr Q ON sch.qonbr = Q.qonbr) " & _
                "INNER JOIN projecttype P ON Q.projtypeid = P.projtypeid) " & _
                "LEFT JOIN zuser z ON sch.techuserid = z.userid) " & _
                "INNER JOIN prodstatus ps ON sch.prodstatusid = ps.prodstatusid) " & _
                "INNER JOIN vContractSummary C ON Q.sonbralt = C.sonbralt " & _
                "WHERE sch.prodstatusid IN (4,1,6) AND sch.isactive=1 AND Q.isActive=0 AND sch.prodid=" & noprod & " " & _
                "AND Q.sonbralt is Not Null AND sch.schdate>'" & dateD & "' AND schwc.wcid = 2"
    Merci

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Merci de ne poster ici que le code SQL et, de préférence, dans une mise en forme qui facilite la lecture et la compréhension de la requête.
    Les parenthèses autour des jointures sont inutiles.

    Voici ta requête récrite et remise en forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT Q.sonbralt, P.descr, sch.prodid, ps.descr , sch.prodstatusid2, sch.amount, 
        sch.deliveryno, z.name, sch.schdate, sch.deliverydate, schwc.nbhours, C.fermes
    FROM workcenter w 
    INNER JOIN rsscheduledtlwc schwc ON w.wcid = schwc.wcid
        INNER JOIN rsscheduledtl sch ON schwc.rsschdtlid = sch.rsschdtlid
            LEFT JOIN zuser z ON sch.techuserid = z.userid
            INNER JOIN prodstatus ps ON sch.prodstatusid = ps.prodstatusid
            INNER JOIN QOHdr Q ON sch.qonbr = Q.qonbr
                INNER JOIN projecttype P ON Q.projtypeid = P.projtypeid
                INNER JOIN vContractSummary C ON Q.sonbralt = C.sonbralt 
    WHERE sch.prodstatusid IN (4,1,6) 
        AND sch.isactive = 1 
        AND Q.isActive = 0 
        AND sch.prodid = " & noprod & "
        AND Q.sonbralt IS NOT NULL 
        AND sch.schdate > '" & dateD & "' 
        AND schwc.wcid = 2
    Syntaxiquement, cette requête semble correcte mais ne comprenant pas le sens du nom des colonnes et ne connaissant pas le besoin qui t'a conduit à écrire cette requête, je ne peux te dire si elle donnera le résultat escompté.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

Discussions similaires

  1. Relation entre les tables
    Par mzt.insat dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/11/2005, 08h17
  2. [XSD] Relation entre deux tables
    Par fd59 dans le forum Valider
    Réponses: 2
    Dernier message: 09/09/2005, 23h33
  3. Relation entre les tables
    Par adelyx dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/04/2005, 23h06
  4. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

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