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 :

Intégration des données externes dans une vue


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 954
    Par défaut Intégration des données externes dans une vue
    Bonjour à tous,

    J'ai une base de données "BD1" contenant les tables "ACH","PAF","VEN","PAC" , et j'ai créer une vue sur cette base de donnée comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE VIEW V1 (DAT, BON, DESCL, PRO1, DESPR1, QTE1, PUV, MTV, PAC, FAC, DESF, PRO2, DESPR2, QTE2, PUA, MTA, PAF, DESD, DEP)
    AS       
      select dat,'' as bon,'' as descl,'' as pro1,'' as despr1,null as qte1,null as puv,null as mtv,null as pac,fac,desf,pro as pro2,des as despr2,qte as qte2,pua,mht as mta,null as paf,null as dep,null as desd   from ACH  where (pro is not null)
      union all
      select dat,null as bon ,null as descl,null as pro1,null as despr1,null as qte1,null as puv,null as mtv,null as pac,fac,null as desf,null as pro2,null as despr2,null as qte2,null as pua ,null as mta,ver as paf,null as dep,null as desd   from PAF   
      union all
      select dat,bon,descl,pro as pro1,des as despr1,qte as qte1,puv,mht as mtv,null as pac,null as fac,null as desf,null as pro2,null as despr2,null as qte2,null as pua ,null as mta,null as paf,null as desd,null as dep   from VEN  where (pro is not null)
      union all
      select dat,fac as bon ,?? as descl,null as pro1,null as despr1,null as qte1,null as puv,null as mtv,ver as pac,null as fac,null as desf,null as pro2,null as despr2,null as qte2,null as pua ,null as mta,null as paf,null as desd,null as dep   from PAC 
      union all
      select dat,null as bon ,null as descl,null as pro1,null as despr1,null as qte1,null as puv,null as mtv,null as pac,null as fac,null as desf,null as pro2,null as despr2,null as qte2,null as pua ,null as mta,null as paf,des as desd,dep   from RED where (cas<>2)and(cas<>3)   
    ;
    Mon problème est là ou j'ai mis "??", en fait la je doit recupérer une information sur une autre base de données, mais je ne sais pas comment faire

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Bonjour
    Citation Envoyé par chekkal Voir le message
    en fait la je doit récupérer une information sur une autre base de données
    une autre base de données Firebird ou pas ? ça peut paraître évident mais non.
    On peut accéder à une autre base de données Firebird à partir de la version 2.5 à l'intérieur d'un bloc ou d'une procédure mais je ne pense pas à l'intérieur d'une vue puisqu'il s'agit d'une syntaxe PSQL
    Citation Envoyé par chekkal Voir le message
    Mon problème est là ou j'ai mis "??",
    retrouver ce ?? c'est pas vraiment la bonne méthode pour expliquer le problème
    de plus quelle est la relation entre la table PAC et la base de données externes ?

    Pour ces raisons envisager une procédure plutôt qu'une vue

    Note : il est relativement facile de créer une CTE et de faire ensuite une JOINture entre la table PAC et cette CTE

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 954
    Par défaut
    Bonjour sergio,

    En fait le ?? et la designation correspondant à un champs de la table pac,
    exple
    TABLE PAC | TABLE EXTERNE
    ....................... |......................................
    Champs référence | Désignation
    ...........................|..................................
    0001 | EURL MPBA

    si il existe une solution par procédure je suis preneur

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    une recherche dans ce forum avec ON EXTERNAL (je le fait que cela n'ai pas été fait)
    https://www.developpez.net/forums/d1...s/#post8597698
    La procédure indiquée semble correspondre exactement à tes besoins

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 954
    Par défaut
    Bonjour,

    une recherche dans ce forum avec ON EXTERNAL (je le fait que cela n'ai pas été fait)
    https://www.developpez.net/forums/d1...s/#post8597698
    La procédure indiquée semble correspondre exactement à tes besoins
    je l'ai déjà vu ce post et tous les poste ayant pour sujet "on external" et ça résout toujours pas mon problème. en Effet comment intégrer le "on external" directement dans mon code?

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    c'est pourtant pas difficile il faut une procédure telle que celle décrite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SET TERM ^;
    CREATE PROCEDURE EXTERNVALUES returns (emp_no smallint,fullname varchar(37)) as
    begin
    FOR EXECUTE STATEMENT 'select emp_no,full_name from employee'
    ON EXTERNAL DATA SOURCE 'localhost:employee' AS USER 'sysdba' PASSWORD 'masterkey'
    INTO :emp_no,:fullname
    DO SUSPEND;
    end^
    SET TERM ;^
    et utiliser la CTE sur cette procedure pour faire une jointure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    union
    WITH E AS (SELECT EMP_NO,FULLNAME FROM EXTERNVALUES)
    SELECT E.EMP_NO,E.FULLNAME FROM E LEFT JOIN CLIENTS C ON C.ID=E.EMP_NO
    union
    ...
    le tout est de retranscrire avec vos colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     WITH E AS (SELECT EMP_NO,FULLNAME FROM EXTERNVALUES)
     select p.dat,p.fac,e.FullName,null,null,null,null,null,p.ver,null,null,null,null,null,null,null,null,null,null from PAC  p LEFT JOIN E ON E.EMP_NO=P.ID
    mais comme vous ne donnez pas la moitié des informations nécessaires, la structure de la table externe, le champ de référence entre la table PAC et cell-ci, une tentative de procédure par exemple difficile d'en écrire plus, je reste dans les généralités

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

Discussions similaires

  1. [MySQL] enregistrer des données CSV dans une BDD
    Par NicoO_O dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/11/2006, 23h10
  2. Utiliser des objets SWING dans une vue RCP
    Par manuga72 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 20/10/2006, 17h26
  3. Insérer des données Excel dans une table ACCESS
    Par anikeh dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 22h42
  4. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41
  5. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11

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