Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > Designer
Designer Forum d'entraide Designer (création d'univers, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2008, 17h28   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 1
Points : 1
Par défaut [BO 6.5][Designer] Tables dérivées et jointures externes

Bonjour,
Suite aux échanges du messages:[BO 5.1.2] Alias et requètes, je suis passée en version 6.5. et j'ai créé des tables dérivées.
Malheureusement cette solution ne résoud pas complètement mon problème...

La requète suivante fonctionne mais je perd les lignes pour lesquelles AttacheDecideur.NUMATT n'est pas renseigné:

SELECT
dbo.CONTRAT.NUMCNT,
AttacheCommercial.NUMATT,
AttacheDecideur.NUMATT
FROM
dbo.CONTRAT,
( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='999') AttacheCommercial,
( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='012') AttacheDecideur,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='999') contratCom,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='012') contratDec
WHERE
( dbo.CONTRAT.NUMCNT=contratCom.NUMCNT )
AND ( contratCom.NUMATT=AttacheCommercial.NUMATT )
AND ( dbo.CONTRAT.NUMCNT=contratDec.NUMCNT )
AND ( contratDec.NUMATT=AttacheDecideur.NUMATT )
AND (
year(dbo.CONTRAT.DDMPRT) = 2008
)

Du coup (je travaille sur une BDD SQL server) j'ai liée mes tables dérivées avec des jointures externes mais la même requête avec une jointure externe :

SELECT
dbo.CONTRAT.NUMCNT,
AttacheCommercial.NUMATT,
AttacheDecideur.NUMATT
FROM
dbo.CONTRAT,
( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='999') AttacheCommercial,
( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='012') AttacheDecideur,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='999') contratCom,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='012') contratDec
WHERE
( dbo.CONTRAT.NUMCNT*=contratCom.NUMCNT )
AND ( contratCom.NUMATT=AttacheCommercial.NUMATT )
AND ( dbo.CONTRAT.NUMCNT*=contratDec.NUMCNT )
AND ( contratDec.NUMATT=AttacheDecideur.NUMATT )
AND (
year(dbo.CONTRAT.DDMPRT) = 2008
)


me retourne l'erreur suivante:

Erreur liée à la connexion ou au SQLDA0005)
Exception: DBD, [Microsoft][ODBC SQL Server Driver][SQL Server]
La table 'dbo.CONTRATATTACHE' est un membre interne d'une clause de jointure externe.
Cela n'est pas autorisé si la table participe aussi à une clause JOIN régulière.
State: 42000


Ne peut-on pas faire de jointure externe sur une table dérivée?
Qu'elle est la solution pour avoir sur une même ligne à la fois un dbo.CONTRAT.NUMCNT,
AttacheCommercial.NUMATT,
AttacheDecideur.NUMATT
Même lorqu'il y a des valeurs nulles?
Merci pour votre aide
Lbu44
lbu44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 23h13   #2
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Bonsoir,
Bien que travaillant sur des bases Oracle et donc pas compétent en SQL Server, mais il est certain que tu ne peux faire de joiture externe de A vers B suivi d'une équijointure de B vers C (si j'ai réussi à déchiffrer)
tu devrais essayer :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 SELECT
  dbo.CONTRAT.NUMCNT,
  AttacheCommercial.NUMATT,
  AttacheDecideur.NUMATT
FROM
  dbo.CONTRAT,
  ( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='999') AttacheCommercial,
  ( select * from dbo.ATTACHE where dbo.ATTACHE.FONATT='012') AttacheDecideur,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='999') contratCom,
( select dbo.CONTRATATTACHE.CODSOC, dbo.CONTRATATTACHE.NUMATT, dbo.CONTRATATTACHE.NUMCNT from dbo.CONTRATATTACHE where dbo.CONTRATATTACHE.FONATT='012') contratDec
WHERE
  ( dbo.CONTRAT.NUMCNT*=contratCom.NUMCNT  )
   AND  ( contratCom.NUMATT*=AttacheCommercial.NUMATT  )
  AND  ( dbo.CONTRAT.NUMCNT*=contratDec.NUMCNT  )
   AND  ( contratDec.NUMATT*=AttacheDecideur.NUMATT  )
  AND  (year(dbo.CONTRAT.DDMPRT)  =  2008
  )
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2008, 09h19   #3
Membre émérite
 
Avatar de bastoonet
 
Inscription : septembre 2006
Messages : 815
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France

Informations forums :
Inscription : septembre 2006
Messages : 815
Points : 843
Points : 843
Si mes souvenirs sont bon...il y a un variable a mettre en jour sur le poste client afin d'autoriser l'utilisation des jointures externes dans les requetes SQLserver sur BO ... mais peut être est-ce déjà OK pour ça !

car ton erreur ressemble plutot à une jointure externe positionnée du mauvais coté...
__________________
~~ bastoonet ~~

"Team BAB - Spécialistes BO"
bastoonet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2008, 09h35   #4
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 1
Points : 1
D'accord, maintenant je comprends l'erreur mais une jointure externe entre les table B et C comme tu le proposes provoque également un message d'erreur:



Exception: DBD, [Microsoft][ODBC SQL Server Driver][SQL Server]La requête comporte une requête de jointure externe qui n'est pas autorisée.State: 42000

(PS) j'ai bien modifié une variable pour pouvoir autoriser les jointure externe
lbu44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 13h33   #5
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 181
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 181
Points : 2 717
Points : 2 717
Bonjour,

Je pense que tu devrais soumettre ton SQL au Forum MS-SQL Server parce que là on n'avance pas.

Tu y trouveras des habitués de SQL Server et de sa syntaxe SQL qui pourront apporter de l'aide.

Une fois le SQL au point on reprendra la discussion sur l'utilisation de la table dérivée.

Qu'en penses tu ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 21h15   #6
Invité de passage
 
Inscription : janvier 2008
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 6
Points : 1
Points : 1
Ca marche quand j'aurais une réponse je viendrais en reparler ici. Merci
lbu44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h08.


 
 
 
 
Partenaires

Hébergement Web