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

SQL Firebird Discussion :

Blocage requête SQL


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 71
    Points : 91
    Points
    91
    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 : 186
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 émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    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
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre régulier
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 71
    Points : 91
    Points
    91
    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 émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Une journée qui démarre bien donc
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre régulier
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 71
    Points : 91
    Points
    91
    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