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

Cognos Discussion :

[Impromptu 7] Peut-on utiliser la syntaxe INNER JOIN avec Impromptu sous Oracle 9.2 ?


Sujet :

Cognos

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut [Impromptu 7] Peut-on utiliser la syntaxe INNER JOIN avec Impromptu sous Oracle 9.2 ?
    Bonjour à tous.

    Le titre résume bien la question : quand je définis une jointure interne entre 2 tables, Impromptu la traduit par une égalité des champs dans la clause where de la requête.
    N'est-il pas possible d'utiliser la syntaxe INNER JOIN ??

    Ce qui est surprenant, c'est que dans la zone [Exceptions Joins] du fichier cogdmor.ini, j'ai une ligne :
    Inner_Syntax=" INNER JOIN "

    ce qui laisserait croire qu'Impromptu devrait utiliser cette syntaxe...(mais ce n'est pas le cas).

  2. #2
    Membre confirmé

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2006
    Messages : 224
    Points : 467
    Points
    467
    Par défaut
    Quel est ton but ? que va t'apporter l'utilisation du Inner join à la place de l'égalité dans la clause where ?

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par brunolf
    que va t'apporter l'utilisation du Inner join à la place de l'égalité dans la clause where ?
    En fait, je ne suis pas sûr

    Je vais tenter d'expliquer mon soucis...
    Mon catalogue mêle allegrement jointures internes et externes.
    Imaginons que ma requête lie 3 tables de la manière suivante :
    table_1 -> (interne) table_2
    table_3-> (externe) table_2.

    Ca me donne le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * from
    table_3 t3 LEFT OUTER JOIN table_2 t2 on t3.id=t2.fk_t3_id, table_1 t1
    where t2.id=t1.fk_t2_id
    La clause WHERE exclu donc les enregistrements pour lesquels je n'ai pas de lien avec la table_2 (et donc avec la table_1).

    Ce que j'aimerais, c'est obtenir le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from table_3 t3 left outer join 
    (table_2 t2 inner join table_1 t1 on t2.id=t1.fk_t2_id)
    on t3.id=t2.fk_t3_id
    Evidemment, rien ne m'assure qu'Impromptu fasse la jointure interne en priorité...mais si c'était le cas, ça m'arrangerait beaucoup !!

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Je sais que mon raisonnement est un peu bancal...
    mais personne ne peut me dire s'il est possible d'utiliser le INNER JOIN ??
    (et si oui comment ?)

  5. #5
    Membre confirmé

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2006
    Messages : 224
    Points : 467
    Points
    467
    Par défaut
    Pour les Inner join dans impromptu, à mon avis, c'est mort...

    Ce que j'aimerais, c'est obtenir le code :
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM table_3 t3 LEFT OUTER JOIN 
    (table_2 t2 INNER JOIN table_1 t1 ON t2.id=t1.fk_t2_id)
    ON t3.id=t2.fk_t3_id
    La requête que tu veux obtenir correspond à ceci si on l'écrit "comme impromptu l'écrirait"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM table_3 t3
    ,        (SELECT *  
              FROM table_2 t2
              ,        table_1 t1
              WHERE t2.id=t1.fk_t2_id ) as sous_requete
    where t3.id = sous_requete.fk_t3_id (+)
    => à mon avis, tu n'as pas de solution pour faire ça avec Impromptu : Impromptu peut te générer des jointures entre tes tables, mais ce que tu veux faire correspond à joindre une table avec le résultat d'une requête : Impromptu ne sais pas le faire.

    Il faudrait lui mâcher le travail en créant une vue BD avec ta sous requête, et dans impromptu, tu créé une jointure entre ta table T3 et t'a vue.

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Je pense aussi que je demande l'impossible. D'autant qu'on peut mêler des jointures internes et externes de différentes manières, qui donneront des résultats différents selon les jointures traitées en priorité.

    Par contre, ma curiosité reste sur sa faim quant au choix de la syntaxe utilisée par Impromptu pour les jointures.
    L'exemple que tu me donnes utilise le (+) pour les jointures externes. Chez moi, Impromptu utilise le LEFT OUTER JOIN.
    Le fichier cogdmor.ini spécifie bien :
    Left_Eql=" LEFT OUTER JOIN "
    Right_Eql=" RIGHT OUTER JOIN "

    ainsi que
    Inner_Syntax=" INNER JOIN "
    Mais il utilise le " = " pour les jointures internes. J'avoue que je ne saisis pas bien pourquoi...

    Cela dit, il m'a fallut passer à la syntaxe (+) car Oracle 9.2 ne sait pas correctement traiter les conditions de jointure avec des constantes. C'est à cette occasion que j'ai du me frotter au fichier cogdmor.ini, et j'avoue que nombre de parmètres sont obscurs.
    Si tu sais où trouver un descriptif de l'ensemble des paramètres, ça m'intéresse, car la documentation fournie avec Impromptu est plutôt discrète sur le sujet.

  7. #7
    Membre confirmé

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2006
    Messages : 224
    Points : 467
    Points
    467
    Par défaut
    Je doute que ce type de doc existe ... peut-être à demander au support Cognos ?

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Arrff, j'y ai bien pensé, mais ma boîte n'a pas de n° client...

Discussions similaires

  1. problème Syntax INNER JOIN sqldatasource
    Par quake3 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 12/04/2011, 13h48
  2. [ADO ACCESS] Problème de syntaxe INNER JOIN
    Par couiss dans le forum Bases de données
    Réponses: 6
    Dernier message: 03/04/2008, 09h37
  3. [MySQL] syntaxe inner join
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/12/2007, 14h17
  4. [IDE]Peut-on utiliser le FrameWork 2.0 avec VS2003 ?
    Par infosam76 dans le forum Visual Studio
    Réponses: 2
    Dernier message: 21/04/2006, 01h33

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