|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 6 ![]() |
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 SQL 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 |
|
|
00
|
|
|
#2 | ||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
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 :
__________________
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 |
|
Membre émérite
![]() Inscription : septembre 2006 Messages : 815 ![]() |
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" |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 6 ![]() |
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 |
|
|
00
|
|
|
#5 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
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 !!!" |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 6 ![]() |
Ca marche quand j'aurais une réponse je viendrais en reparler ici. Merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com