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 :

Création de vue + jointure impossible


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut Création de vue + jointure impossible
    Bonjour,

    Je souhaite créer une vue pour regrouper les infos de plusieurs tables mais l'utilisation d'une jointure fait que cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT M.ID, R.CODE_REPERE, TM.CODE_TYPE_MACHINE, N.NUM_NUM_SERIE, V.CODE_VERSION, M.REMARQUE, F.HISTORIQUE
    FROM MACHINE M, REPERE R, NUM_SERIE N, TYPE_MACHINE TM, VERSION V, FICHE F
    LEFT JOIN FICHE ON F.MACHINE_ID = M.ID
    WHERE M.REPERE_ID = R.ID AND
          M.TYPE_MACHINE_ID = TM.ID AND
          M.NUM_SERIE_ID = N.ID AND
          M.VERSION_ID = V.ID
    A l'exécution, j'ai le message d'erreur qui m'explique que la colonne M.ID n'existe pas alors que si puisque je requête dessus.
    Unsuccessful metadata update.
    ALTER VIEW MACHINE_VIEW failed.
    Dynamic SQL Error.
    SQL error code = -206.
    Column unknown.
    M.ID.

    Par contre si je retire la jointure, la vue se crée correctement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT M.ID, R.CODE_REPERE, TM.CODE_TYPE_MACHINE, N.NUM_NUM_SERIE, V.CODE_VERSION, M.REMARQUE, F.HISTORIQUE
    FROM MACHINE M, REPERE R, NUM_SERIE N, TYPE_MACHINE TM, VERSION V, FICHE F
    LEFT JOIN FICHE ON F.MACHINE_ID = M.ID
    WHERE M.REPERE_ID = R.ID AND
          M.TYPE_MACHINE_ID = TM.ID AND
          M.NUM_SERIE_ID = N.ID AND
          M.VERSION_ID = V.ID
    Il doit y avoir quelque chose d'évident mais je ne le vois pas....

    Merci pour vos retours

    Delphi Berlin / FB 3.0

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    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 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    une première chose qui me saute aux yeux c'est une écriture plutôt bizarre, pourquoi qu'une partie "normalisée" (et mal car 2 fois la table FICHE) avec la jointure et plein de tables sans !?
    c'est à tel point que je ne voit même pas la différence entre les deux codes !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT M.ID, R.CODE_REPERE, TM.CODE_TYPE_MACHINE, N.NUM_NUM_SERIE, V.CODE_VERSION, M.REMARQUE, F.HISTORIQUE
    FROM MACHINE M   
             JOIN REPERE R ON M.REPERE_ID = R.ID 
             JOIN  NUM_SERIE N ON M.NUM_SERIE_ID = N.ID
             JOIN TYPE_MACHINE TM ON M.TYPE_MACHINE_ID = TM.ID
             JOIN VERSION V ON  M.VERSION_ID = V.ID
             LEFT JOIN FICHE F ON F.MACHINE_ID = M.ID
    NB en relisant, l'erreur vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FICHE F
    LEFT JOIN FICHE ON F.MACHINE_ID = M.ID
    ce n'est pas la table machine qui est en jonction mais la table FICHE (alias F) avec la table FICHE (sans alias) donc la colonne M.ID n'existe pas

    m'est avis qu'une bonne petite lecture sur les jointures est nécessaire
    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

  3. #3
    Membre régulier
    Développeur informatique
    Inscrit en
    Décembre 2010
    Messages
    228
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 228
    Points : 113
    Points
    113
    Par défaut
    Merci SergioMaster pour ta réponse.

    m'est avis qu'une bonne petite lecture sur les jointures est nécessaire
    Même obligatoire je crois...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2017, 17h36
  2. création de vue avec jointures et fonctions mathématiques
    Par lepeule dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2011, 11h17
  3. alternative à la création de vues dans une procedure stockée
    Par cladsam dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/09/2005, 17h07
  4. création de clé étrangère impossible
    Par Kozher dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/08/2005, 10h38
  5. Problème de création de vue.
    Par pimousse76 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/02/2005, 15h14

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