|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 6 ![]() |
Bonjour,
Je suis nouvelle utilisatrice de BO designer. Je dois créer un Univers à partir d'une base de donnée SQL server. Je suis en cours de test avec des requètes simples voici mon problème: J'ai créé deux alias sur une table pour distinguer (par exemple) les personnes de type commerciaux et les personnes de type client. Mais je ne peux pas en une seule requête avoir à la fois le commercial et le client lié à un contrat. Est-ce propre à l'ALIAS? J'ai essayé avec une condition idem, j'ai besoins de créer deux requètes puis les lier. cette solution ne me semble pas acceptable pour un utilisateur, dois-je modifier ma BDD en entrée? Voici la requète générée par BO lorsque je teste: SELECT CONT.NUMCNT, PERS_Client.NUMPER, PERS_Commercial.NUMPER FROM CONTPERS, CONT, PERS PERS_Redacteur, PERS PERS_Commercial WHERE ( dbo.CONT.COD=dbo.CONTPERS.COD and CONT.NUMCNT=CONT.NUMCNT ) AND ( PERS_Commercial.Fonper='999' ) AND ( PERS_Redacteur.FONper='001' ) AND ( dbo.CONTPERS.COD=PERS_Commercial.COD and dbo.CONTPERS.NUMPER=PERS_Commercial.NUMPER ) AND ( dbo.CONTPERS.COD=PERS_Redacteur.COD and dbo.CONTPERS.NUMPER=PERS_Redacteur.NUMPER ) AND ( year(dbo.CONT.date) = 2007 ) Les tables PERS_Redacteur et PERS_Commercial sont des alias de la table PERS. Merci pour votre aide. |
|
|
00
|
|
|
#2 | ||||||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Bonsoir,
Je ne pratique pas SQL Server (seulement Oracle) Mais il ne semble pas que le SQL soit très différent Je voudrais comprendre : Dans ta table CONT les contrats avec N° de contrat et code ? puis une table CONTPERS avec N° de contrat et code PERS enfin une table PERS en dehors du copier coller identique dans la 1ère jointure Code :
Code :
Je pense que ton problème est que dans CONTPERS tu as une ligne par personne rattachée au contrat ... ? Me trompe-je ? Si c'est le cas , il te faudrait plutôt que une table CONTPERS et deux alias PERS... 2 sous requêtes (un peu comme des vues oracle) de ce type Code :
Dis moi si ça t'aide
__________________
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 confirmé
![]() Inscription : novembre 2007 Messages : 322 ![]() |
Bonsoir,
Citation:
Citation:
Pour lier un alias à la table source, il suffit de faire un clic droit sur l'alias et de séléctionner "jointure". Une fenêtre s'affiche alors et tu peux choisir le type de jointure (equi-jointure, jointure externe ...) ainsi que la cardinalité. Sous le module "reporter" de BO, après avoir choisis l'univers, tu peux apercevoir l'alias et ta table initiale. Tu crées donc ta requête, pou lier 2 requêtes tu peux utiliser les valeurs ensemblistes (union, inter, minus). Je ne connais pas également SQL serveur, comme Bruno2R je travaille sous Oracle, mais en regardant ta requête, ce qui me paraît bizarre c'est que dans ta clause "select" tu utilises la table PERS_Client (PERS_Client.NUMPER) mais elle n'apparaît ni dans la clause "from" ni dans la clause "where" pour faire la jointure. En espérant que ça puisse t'aider. |
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : janvier 2008 Messages : 6 ![]() |
Bonjour,
D'abord merci de vous interesser à mon problème, ensuite, pour Bruno2r, bravo tu as mentalement bien rétablie ma requête que j'ai très mal maquillée... et en effet dans CONTPERS j'ai bien une ligne par personne rattachée au contrat. Ta solution avec deux sous requêtes indique donc que je dois lier deux requêtes? je ne connaîs pas bien le requèteur BO car je dois juste fournir un Univers pour un client qui lui devra gérer des rapports pour ses utilisateurs. Et je ne pense pas que ce client puisse lui même saisir du sql, est-il simple de générer deux sous requètes par le reporter BO? Pour répondre à eryk 71 j'ai bien créé deux alias distincts, que j'ai joint à la table réelle. Je n'ai pas de boucle, et ces Alias ne me permettent pas de résoudre une boucle mais plutôt de diviser la table personne en deux tables distinct c'est à dire d'un coté les commerciaux et de l'autre les clients. Je pensait que BO considèrerait ces ALIAS comme des tables distincte les unes des autres et me permettrait de sélectionner simplement sur une même ligne un contrat un client et un commercial. Je joins une partie de mon univers, pensez vous qu'une solution serait de créer en plus de mes alias sur la tables attachés, deux alias sur la table? attachecontrat (par rapport a ma requête maquillée à la place de personne c'est la table attaché et le client est un rédacteur). Merci, Lbu |
|
|
00
|
|
|
#5 | ||
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Alors là vois tu on est la pour ça Forum d'entraide des développeurs ...
Code :
ensuite, pour Bruno2r, bravo tu AS mentalement bien rétablie ma requête que j'ai très mal maquillée... et en effet dans CONTPERS j'ai bien une ligne par personne rattachée au contrat. Tes allias ne servent à rien car tu as un seul champ COD et une ligne différente par individu possédant une fonction définie par Fonper tu ne peux donc pas avoir deux équijointures pour un seul champ elles s'annuleraient entre elles. Des jointures externes sur les deux alias pourraient te ramener l'identité du commercial sur sa ligne et celle du rédacteur sur la sienne. Mais tu n'aurais toujours pas les infos sur l'UNIQUE ligne du contrat ... Citation:
Mais tu es en version 5 et les tables dérivées ne sont utilisables qu'à partir de la V6. Citation:
Il aura effectivement autant de lignes par contrat que d'individus rattachés Il ne pourra pas résoucre le problème de lignes multiples en faisant un tableau croisé basé sur le code de fonction
Il ne pourra pas le résoudre non plus avec les formules contextuelles En effet, l'opérateur contextuel Où n'est disponible qu'avec les objets indicateurs là aussi. La seule solution (en tout cas dans l'état actuel de mes connaissances - mais je pense que je vais me pencher sur le sujet) est de
__________________
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 ![]() |
Ok je dois très rapidement passer en version 6.5, donc je peux peut être demander à mon client de patienter afin de pouvoir créer ces vues et attendant je lui propose les solutions tableaux croisés ou formules contextuelles.
Je reviendrais d'ici quelques temps pour vous dire si j'arrive à m'en sortir avec mes vues... Merci pour tout, A+ Lbu44 |
|
|
00
|
|
|
#7 |
![]() ![]() Bruno ROMAN-RUIZ Inscription : décembre 2006 Messages : 2 181 ![]() |
Je vois que tu as parfaitement compris, bonne chance !
Peux tu mettre Résolu s'il te plait ça fait gagner du temps à ceux qui veulent aider ... et ça donne envie aux autres de lire quelle solution a été trouvée. Merci d'avance et à bientôt.
__________________
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
|
Copyright © 2000-2012 - www.developpez.com