|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Bonjour à tous,
Je rencontre un problème dans BO 6.5 concernant une jointure complexe avec une table dérivée. J'ai une table dérivé CLASSENIV1 issu d'une table dans laquelle je filtre les enregistrements suivant la longueur d'un code (requête de génération SELECT CLASSE,LIBELLE FROM CLASSE WHERE LENGTH(CLASSE)=1) Cette table contient donc toutes les classes de niveau 1 J'ai une table PRODUIT qui contient le code complet de la classe (code de type A11B1C1) où le premier caractère correspond au 1er niveau (correspondance avec mes classes de niveau 1) Je fais donc une jointure entre ma table dérivée et cette table PRODUIT. La jointure est complexe (WHERE LPAD(PRODUIT.CLASSE,1)=CLASSENIV1.CLASSENIV1 ) Lorsque je crée un rapport, la jointure n'est jamais utilisé , BO me fait 2 select sur chacune des tables. Pour essayer de résoudre le problème, j'ai essayé la même jointure sur la table CLASSE initiale et là ca marche ??? Quelqu'un a t'il une idée ? Merci d'avance pour votre aide |
|
|
00
|
|
|
#2 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 184 ![]() |
Bonjour,
C'est pas très clair come explication ... Si tu avais montré le sql de ta table dérivée + 1 ligne de données on aurait pu se faire une idée de la jointure ... Si on essaie de comprendre ... table dérivée CLASSENIV1 : CLASSE 1 caractère mais on ne sait pas si c'est 'A' ou '1' LIBELLE classique table PRODUIT : CLASSE code complet de la classe (code de type A11B1C1) Où 1er caractère correspond au 1er niveau (A ?) De sorte que je ne comprends pas ce que LPAD vient faire ici ...? c'est pas plutôt une jointure du premier caractère de PRODUIT.CLASSE avec CLASSENIV1.CLASSENIV1 que tu veux faire ? Code :
substr(PRODUIT.CLASSE,1)=CLASSENIV1.CLASSENIV1
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Excusez moi si je n'ai pas été trés clair, un exemple :
Dans ma table produit, champ classe : A11B1C1 B12C3C4 Toujours structuré de la même manière (le 1er caractére correspond au niveau 1, les deux seconds au niveau 2 etc...) Dans ma table CLASSE : A A11 A12 A11B A12B etc... B B11 B12 etc... Dans ma table dérivée, je n'ai donc que : A B Pour le LPAD je ne sais pas où j'avais la tête mais c'est bien substr qu'il faut lire Excusez encore pour l'imprécision de ma question. |
|
|
00
|
|
|
#4 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 184 ![]() |
Bon ! Je me disais aussi ...
Donc cette jointure complexe c'est quoi au juste ? celle que j'ai devinée ? ![]() Code :
substr(PRODUIT.CLASSE,1)=CLASSENIV1.CLASSENIV1 compte le nb de caractères des deux colonnes jointes tu as peut être des espaces Tu dis que la jointure n'est pas utilisée Colle nous le sql utilisé entre balises code qu'on puisse voir de quoi tu parles Merci
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
|
|
#5 | ||||||||
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Tout juste la jointure est celle ci :
Code :
SQL 1 : Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#6 | ||||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 184 ![]() |
J'ai peut être une idée ...
Dis moi dans les propositions suivantes celles qui sont vraies :
Code :
Code :
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
||||
|
|
00
|
|
|
#7 | |||
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Citation:
Citation:
Citation:
J'ai testé la création de la table dérivé mais même problème |
|||
|
|
00
|
|
|
#8 | ||||
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Petite précision supplémentaire.
Ce n'est pas un problème de données car pour tester j'ai créé la table en dur dans un schéma Code :
Code :
|
||||
|
|
00
|
|
|
#9 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 184 ![]() |
Pour essayer le sql avec cast as tu pris la peine de regarder la taille des champs CLASSENIV1 et CLASSE
dans mon exemple j'ai mis 7 mais il faut que ce soit la taille de la colonne CLASSE AUTRES PISTES DE RECHERCHE Est ce que tu as des contextes dans ton univers ? Si oui la table dérivée et la table PRODUIT sont elles dans le même contexte ? As tu des tables agrégées ? As tu créé des incompatibilités Table Objets ? Un objet de l'une incompatible avec l'autre suffirait pour créer ce problàme
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!" |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : mai 2004 Messages : 22 ![]() |
Bonjour,
Grâce à vos indications j'ai résolu le problème c'était un problème de contexte entre les deux tables Merci beaucoup pour vos précieuses indications |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com