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 :

SQL Imbriqué DB2


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut SQL Imbriqué DB2
    Bonjour,

    Je tente d'exécuter la requête suivante:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    SELECT 
    	TAB1.ID_CURRENCY_POS,
    	DBDWH.DIM_S_CURRENCY.UK_CURRENCY, 
    	DBDWH.DIM_S_CURRENCY.ID_CURRENCY
    FROM  
    (
    SELECT 
    	CAST(ID_PERIODE AS INTEGER) ID_PERIODE,
    	ID_MONNAIE ID_CURRENCY_LCL, 
    	ID_MONNAIE ID_CURRENCY_POS,
    	ID_PRODUIT ID_PRODUCT,
    	CAST(ID_GENRE AS CHAR(3)) ID_SECURITY_CLASS,
    	CAST(ID_DEPOSITAIRE AS CHAR(4)) ID_CUSTODIAN,
    	CAST((CASE ID_TYPE WHEN 'E' THEN 1 WHEN 'T' THEN 2  ELSE 0 END) AS CHAR(1)) FK_ASSET_TYPE,
    	CAST(ID_SIGLE_VTLMIS AS CHAR(4)) ID_MIS_ASSET_BREAKDOWN,
    	CAST(ID_SIGLE_VTLMIS_FDS AS CHAR(4)) ID_MIS_ASSET_BREAKDOWN_FDS,
    	CAST(ID_CAT_PLMT AS CHAR(3)) ID_INVESTMENT_CATEGORY,
    	ID_RACINE ID_COUNTERPART,
    	NUMERO_ORDRE C_ORDRE_NUMBER,
    	ID_MONNAIE,ID_DOSSIER CD_FILE,ORIGIN_POS CD_ORIGIN,
    	CAST(LPAD(DATE_LIQUIDATION ,8,'0')AS CHAR(8)) S_DT_LIQUIDATION,
    	CAST(ID_DEPOSITAIRE AS CHAR(4)) ID_DEPOSITAIRE,ID_TYPE,
    	CAST(MNT_CONTREVALEUR AS DECIMAL(20,4)) MNT_POSITION_CURRENCY_LCL,
    	CAST(MNT_DEVISE AS DECIMAL(20,4)) MNT_POSITION_CURRENCY_POS,
    	CAST(MNT_DEVISE_EST AS DECIMAL(20,4)) MNT_POSITION_CURRENCY_PERF ,
    	CAST(INTER_CRUS_CHF AS DECIMAL(20,4)) MNT_ACCRUAL_INTEREST_LCL,
    	CAST(INTER_CRUS_EST AS DECIMAL(20,4)) MNT_ACCRUAL_INTEREST_PERF,
    	FORTUNE_BRUTE FLG_GROSS_ASSET,
    	FORTUNE_NETTE FLG_NET_ASSET,
    	DATE_DERNIER_MVT DT_LAST_MOVEMENT,
    	CAST(QTY AS DECIMAL(20,4)) MNT_QUANTITY,
    	CAST(QTE_TIT_PREN AS DECIMAL(20,4)) MNT_QUANTITY_PRE_RECORDED,
    	COURS_CHANGE MNT_RATE_EXCHANGE_POS_LCL,
    	COURS_CHANGE_EST MNT_RATE_EXCHANGE_PERF_LCL,
    	COURS_TITRE S_MNT_SHARE_PRICE,
    	COURS_ACHAT_DEV_TIT S_MNT_AVERAGE_PURCHASE_PRICE_CURR_SEC,
    	COURS_ACHAT_DEV_OP S_MNT_AVERAGE_PURCHASE_PRICE_CURR_POS,
    	DT_DER_ACV S_DT_LAST_BUY_SELL,
    	MNT_PERF_HIST_DEV_TIT S_MNT_PERF_HIST_CURR_SEC,
    	MNT_PERF_HIST_DEV_OP S_MNT_PERF_HIST_CURR_POS,
    	MNT_PERF_YTD_DEV_TIT S_MNT_PERF_YTD_CURR_SEC,
    	MNT_PERF_YTD_DEV_OP S_MNT_PERF_YTD_CURR_POS,
    	MNT_PERF_DRU_HIST_DEV_TIT S_MNT_PERF_DRU_CURR_SEC,
    	MNT_PERF_DRU_HIST_DEV_OP S_MNT_PERF_DRU_CURR_POS,
    	MNT_PERF_DRU_YTD_DEV_TIT S_MNT_PERF_DRU_YTD_CURR_SEC,
    	MNT_PERF_DRU_YTD_DEV_OP S_MNT_PERF_DRU_YTD_CURR_POS,
    	RDT_ECH_FIN S_MNT_DRU_YIELD
    FROM  
    	DBBI.UFH_POSI_POSITIONFI 
    WHERE  ID_PERIODE = 20151231
    AND (MNT_CONTREVALEUR IS NOT NULL
        OR MNT_DEVISE IS NOT NULL)) TAB1, DBDWH.DIM_S_CURRENCY
    LEFT OUTER JOIN DBDWH.DIM_S_CURRENCY ON TAB1.ID_CURRENCY_POS = DBDWH.DIM_S_CURRENCY.ID_CURRENCY;
    Et renvoi d'un failed :
    A reference to column "DBDWH.DIM_S_CURRENCY.ID_CURRENCY" is ambiguous.. SQLCODE=-203, SQLSTATE=42702, DRIVER=4.16.53
    Pouvez-vous m'aider svp?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    C'est du au fait que vous utilisez 2 fois la table DIM_S_CURRENCY dans votre requete, du coup, faute d'alias, l'interpréteur ne sait pas à quelle occurrence se rapporte votre colonne

    Ajoutez des alias et le problème n'apparaitra plus

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    De plus, je ne vois aucun critère de jointure entre la 1ère utilisation de DIM_S_CURRENCY et la requete imbriquée dont l'alias est TAB1
    Edit : J'ai mis en couleur ci dessous le code manquant, et en gras, la 2ème utilisation de la même table, qui rend nécessaire l'utilisation de 2 alias

    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
    SELECT TAB1.ID_CURRENCY_POS,
           DBDWH.DIM_S_CURRENCY.UK_CURRENCY, 
           DBDWH.DIM_S_CURRENCY.ID_CURRENCY
    FROM (SELECT CAST(ID_PERIODE AS INTEGER) ID_PERIODE,
          [. . .] RDT_ECH_FIN S_MNT_DRU_YIELD
          FROM DBBI.UFH_POSI_POSITIONFI 
          WHERE ID_PERIODE = 20151231
            AND (    MNT_CONTREVALEUR IS NOT NULL
                 OR  MNT_DEVISE IS NOT NULL)
         ) TAB1, 
    INNER JOIN ou LEFT (OUTER) JOIN
    DBDWH.DIM_S_CURRENCY
       ON ?????
    LEFT OUTER JOIN DBDWH.DIM_S_CURRENCY   
      ON TAB1.ID_CURRENCY_POS = DBDWH.DIM_S_CURRENCY.ID_CURRENCY;

  4. #4
    Membre confirmé Avatar de Sebwar
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 172
    Points : 498
    Points
    498
    Par défaut
    Hello !

    Au petit bonheur la chance je dirais qu'il faut remplacer ce lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OR MNT_DEVISE IS NOT NULL)) TAB1, DBDWH.DIM_S_CURRENCY
    LEFT OUTER JOIN DBDWH.DIM_S_CURRENCY ON TAB1.ID_CURRENCY_POS = DBDWH.DIM_S_CURRENCY.ID_CURRENCY;
    par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OR MNT_DEVISE IS NOT NULL)) TAB1
    LEFT OUTER JOIN DBDWH.DIM_S_CURRENCY ON TAB1.ID_CURRENCY_POS = DBDWH.DIM_S_CURRENCY.ID_CURRENCY;
    Par ailleurs, je ne vois pas l’intérêt de la sous requete
    cette requete ne donnerait elle pas le meme résultat ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT
    	TAB1.ID_MONNAIE ID_CURRENCY_POS,
    	DBDWH.DIM_S_CURRENCY.UK_CURRENCY,
    	DBDWH.DIM_S_CURRENCY.ID_CURRENCY
    FROM
    	DBBI.UFH_POSI_POSITIONFI TAB1 LEFT OUTER JOIN DBDWH.DIM_S_CURRENCY ON TAB1.ID_CURRENCY_POS = DBDWH.DIM_S_CURRENCY.ID_CURRENCY
    WHERE
    	ID_PERIODE = 20151231
    	AND (MNT_CONTREVALEUR IS NOT NULL OR MNT_DEVISE IS NOT NULL);

Discussions similaires

  1. Requête SQL imbriquées
    Par Fanette85 dans le forum ASP.NET
    Réponses: 20
    Dernier message: 05/10/2007, 14h12
  2. requetes sql imbriquées
    Par lesaint972 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 28/08/2007, 16h54
  3. Exporter une table SQL dans DB2 ?
    Par Chikh001 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/07/2007, 13h44
  4. requete sql complexe, que faire: 2 sql imbriques ou fonction date?
    Par Aliveli dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/06/2006, 20h20
  5. Requete Sql imbriqué
    Par NeHuS dans le forum ASP
    Réponses: 11
    Dernier message: 01/06/2006, 12h17

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