Discussion: Blocage requête SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juillet 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juillet 2016
    Messages : 19
    Points : 20
    Points
    20

    Par défaut Blocage requête SQL

    Bonjour,

    J'ai un blocage sur une de mes requêtes à formuler j'ai le code suivant :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    select DISTINCT PIECE.CODE,
    MATRICULE.MATRICULE,
    LSTOCK.DES_LIEUSTOCK,
    UI.CLE_PERE,
    ETATMAT.CODE_ETAT_MATRICULE,
    USURE.CODE_ETAT_US_MAT,
    MATRICULE.COMM_MATRICULE,
    MAGASIN.DES_MAGASIN
     
    from T_PIECE PIECE,
    T_MATRICULE_PIECE MATRICULE,
    T_STOCK STOCK,
    T_LIEUSTOCK LSTOCK,
    T_UI UI,
    T_ETAT_MATRICULE ETATMAT,
    T_ETAT_US_MAT USURE,
    T_MAGASIN MAGASIN
     
    where 1 = 1
    AND ETATMAT.CLE_ETAT_MATRICULE = MATRICULE.CLE_ETAT_MATRICULE
    AND STOCK.CLE_LIEU_STOCK = LSTOCK.NUM_LIEUSTOCK
    AND STOCK.CLE_PIECE = PIECE.CLE_PIECE
    AND MATRICULE.CLE_UI = UI.NUM_UI
    AND MATRICULE.CLE_PIECE = PIECE.CLE_PIECE
    AND USURE.CLE_ETAT_US_MAT = MATRICULE.CLE_ETAT_US_MAT
    AND STOCK.CLE_MAGASIN = MAGASIN.NUM_MAGASIN
    Qui me renvoi le résultat suivant :
    Nom : Capture.PNG
Affichages : 27
Taille : 5,5 Ko

    J'aurai souhaité afficher dans la colonne UI.CLE_PERE le code de l'UI père et non pas son numéro. Je sais pas si c'est très clair...

    Je ne connais pas grand chose au SQL mais il y a t'il une fonction qui me permettrait de sélectionner le CODE_UI du père de l'UI et non pas le CODE_UI de l'UI sur lequel la requête travaille ? Un truc dans le genre
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    select DISTINCT PIECE.CODE,
    MATRICULE.MATRICULE,
    LSTOCK.DES_LIEUSTOCK,
    UI.CODE_UI (mais le code père),
    ETATMAT.CODE_ETAT_MATRICULE,
    USURE.CODE_ETAT_US_MAT,
    MATRICULE.COMM_MATRICULE,
    MAGASIN.DES_MAGASIN
    
    from T_PIECE PIECE,
    T_MATRICULE_PIECE MATRICULE,
    T_STOCK STOCK,
    T_LIEUSTOCK LSTOCK,
    T_UI UI,
    T_ETAT_MATRICULE ETATMAT,
    T_ETAT_US_MAT USURE,
    T_MAGASIN MAGASIN
    
    where 1 = 1
    AND ETATMAT.CLE_ETAT_MATRICULE = MATRICULE.CLE_ETAT_MATRICULE
    AND STOCK.CLE_LIEU_STOCK = LSTOCK.NUM_LIEUSTOCK
    AND STOCK.CLE_PIECE = PIECE.CLE_PIECE
    AND MATRICULE.CLE_UI = UI.NUM_UI
    AND MATRICULE.CLE_PIECE = PIECE.CLE_PIECE
    AND USURE.CLE_ETAT_US_MAT = MATRICULE.CLE_ETAT_US_MAT
    AND STOCK.CLE_MAGASIN = MAGASIN.NUM_MAGASIN
    AND UI.NUM_UI = UI.CLE_PERE
    Si quelqu'un peut me donner une piste, cette personne serait bien aimable...

    Par avance je vous remercie

  2. #2
    Membre éprouvé Avatar de vttman
    Homme Profil pro
    Quinqua ... Poli, ve/aillant de l'Informatique
    Inscrit en
    décembre 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Quinqua ... Poli, ve/aillant de l'Informatique

    Informations forums :
    Inscription : décembre 2002
    Messages : 591
    Points : 1 068
    Points
    1 068

    Par défaut

    Mais sans le MCD, la structure des tables, c'est un peu beaucoup au hasard ...
    La requête est écrite sous une forme "ancienne"

    Je cite : "Les jointures normalisées s'expriment à l'aide du mot clef JOIN dans la clause FROM. Suivant la nature de la jointure, on devra préciser sur quels critères se base la jointure. "
    Ainsi ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CLI_NOM, TEL_NUMERO
    FROM   T_CLIENT, T_TELEPHONE
    WHERE T_CLIENT.CLI_ID = T_TELEPHONE.CLI_ID
    devrait s'écrire comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CLI_NOM, TEL_NUMERO
    FROM   T_CLIENT
           INNER JOIN T_TELEPHONE
                 ON T_CLIENT.CLI_ID = T_TELEPHONE.CLI_ID
    Maintenant pour la dite requête, Il faudrait introduire à nouveau la table T_UI ?

    Ce genre à peaufiner ...
    =>

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    select DISTINCT PIECE.CODE,
    MATRICULE.MATRICULE,
    LSTOCK.DES_LIEUSTOCK,
    UI.CLE_PERE,
    UIP.CODE_UI, 
    ETATMAT.CODE_ETAT_MATRICULE,
    USURE.CODE_ETAT_US_MAT,
    MATRICULE.COMM_MATRICULE,
    MAGASIN.DES_MAGASIN
     
    from T_PIECE PIECE,
    T_MATRICULE_PIECE MATRICULE,
    T_STOCK STOCK,
    T_LIEUSTOCK LSTOCK,
    T_UI UI,
    T_UI UIP,
    T_ETAT_MATRICULE ETATMAT,
    T_ETAT_US_MAT USURE,
    T_MAGASIN MAGASIN
     
    where 1 = 1
    AND ETATMAT.CLE_ETAT_MATRICULE = MATRICULE.CLE_ETAT_MATRICULE
    AND STOCK.CLE_LIEU_STOCK = LSTOCK.NUM_LIEUSTOCK
    AND STOCK.CLE_PIECE = PIECE.CLE_PIECE
    AND MATRICULE.CLE_UI = UI.NUM_UI
    AND UIP.CODE_UI = UI.CLE_PERE
    AND MATRICULE.CLE_PIECE = PIECE.CLE_PIECE
    AND USURE.CLE_ETAT_US_MAT = MATRICULE.CLE_ETAT_US_MAT
    AND STOCK.CLE_MAGASIN = MAGASIN.NUM_MAGASIN
    Je suis sympa comme tout Mosellan mais ...
    ... (m')aider ou (me) mettre sur la voie c'est une chose
    ... tout (me) faire de A à Z, c'est pas ma conception du rôle d'un forum X ou Y
    Si vous n'êtes pas satisfait de mes réponses, n'hésitez pas à me le faire savoir Merci !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juillet 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juillet 2016
    Messages : 19
    Points : 20
    Points
    20

    Par défaut

    Dans le MILLE !!!!!! Je savais pas que l'on pouvait citer une table deux fois...

    Du coup ça donne :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    select DISTINCT PIECE.CODE,
    MATRICULE.MATRICULE,
    LSTOCK.DES_LIEUSTOCK,
    UIP.CODE_UI,
    ETATMAT.CODE_ETAT_MATRICULE,
    USURE.CODE_ETAT_US_MAT,
    MATRICULE.COMM_MATRICULE,
    MAGASIN.DES_MAGASIN
    
    from T_PIECE PIECE,
    T_MATRICULE_PIECE MATRICULE,
    T_STOCK STOCK,
    T_LIEUSTOCK LSTOCK,
    T_UI UI,
    T_UI UIP,
    T_ETAT_MATRICULE ETATMAT,
    T_ETAT_US_MAT USURE,
    T_MAGASIN MAGASIN
    
    where 1 = 1
    AND ETATMAT.CLE_ETAT_MATRICULE = MATRICULE.CLE_ETAT_MATRICULE
    AND STOCK.CLE_LIEU_STOCK = LSTOCK.NUM_LIEUSTOCK
    AND STOCK.CLE_PIECE = PIECE.CLE_PIECE
    AND MATRICULE.CLE_UI = UI.NUM_UI
    AND MATRICULE.CLE_PIECE = PIECE.CLE_PIECE
    AND USURE.CLE_ETAT_US_MAT = MATRICULE.CLE_ETAT_US_MAT
    AND STOCK.CLE_MAGASIN = MAGASIN.NUM_MAGASIN
    AND UI.CLE_PERE = UIP.NUM_UI
    C'est même pas magique c'est encore mieux !!!! Merci bien

  4. #4
    Membre éprouvé Avatar de vttman
    Homme Profil pro
    Quinqua ... Poli, ve/aillant de l'Informatique
    Inscrit en
    décembre 2002
    Messages
    591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Quinqua ... Poli, ve/aillant de l'Informatique

    Informations forums :
    Inscription : décembre 2002
    Messages : 591
    Points : 1 068
    Points
    1 068

    Par défaut

    Une journée qui démarre bien donc
    Je suis sympa comme tout Mosellan mais ...
    ... (m')aider ou (me) mettre sur la voie c'est une chose
    ... tout (me) faire de A à Z, c'est pas ma conception du rôle d'un forum X ou Y
    Si vous n'êtes pas satisfait de mes réponses, n'hésitez pas à me le faire savoir Merci !

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    7 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 7 981
    Points : 17 850
    Points
    17 850
    Billets dans le blog
    4

    Par défaut

    Bonjour,

    n'empêche que sous une forme plus "moderne" pour les jointures ce serait beaucoup plus clair (et plus facile à maintenir), quant au DISTINCT je me pose la question de savoir s'il est vraiment utile ?
    les noms des alias de table sont long aussi, ça aide pas
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    juillet 2016
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : juillet 2016
    Messages : 19
    Points : 20
    Points
    20

    Par défaut

    En Chine la journée se termine !

    Je vous promet d'apprendre à faire des efforts de rédaction dans mes requêtes ! ^^ C'est mon éditeur qui les éditeur comme ça j'ai donc pris modèle.

    Il faudra que je voie si cette syntaxe fonctionne avec le logiciel, je ne vois pas de raison pour qu'elle ne fonctionne pas mais sait on jamais !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/11/2016, 21h07
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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