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 01/02/2011, 12h32   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 15
Points : 15
Par défaut Créer un objet avec une valeur par défaut

Bonjour

Je bloqué dans la mise à jour de mon univers. Je vous expose les faits

J'ai une table RDV avec les champs ID_Client, Date de RDV et Statut RDV
J'ai une autre table Client avec ID_Client

Je souhaite récupérer dans une requête l'ID_Client et la Date de RDV si Actif (Statut RDV = 'A')

Ma jointure entre les 2 tables est :
Table RDV.ID_Client(+) = Table Client.ID_Client AND Table RDV.Statut RDV = 'A'

Normalement le résultat de cette jointure ne me donne que les rdv actif

J'ai ensuite créé un objet de type nvl(Table RDV.Date RDV, null) qui sera utilisé dans ma requête final
Je voudrais que cette objet me ramène la date de rdv si elle existe et vide sinon
Mais ça ne marche pas.

Que dois-je faire?

Merci
Jihane75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 14h55   #2
Modérateur
 
Avatar de Julien59
 
Julien Lizzul
Inscription : mars 2008
Messages : 1 103
Détails du profil
Informations personnelles :
Nom : Julien Lizzul
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 1 103
Points : 1 295
Points : 1 295
Bonjour,

Il faut mettre la jointure externe sur le 'A' également, ce qui donne :
Code :
TABLE RDV.ID_Client(+) = TABLE Client.ID_Client AND TABLE RDV.Statut RDV(+) = 'A'
Si tu ne le fais pas, ta jointure externe devient une equijointure classique.

(N'oublie pas les balises CODE )

Bon courage

EDIT : Je reviens dessus car je ne suis pas sur d'avoir répondu à la question...
Si ton statut est à 'A', y'a t-il forcément une date de rdv renseigné ?
Je ne comprends pas pourquoi tu appliques un NVL pour attribuer NULL... Un NVL est l'équivalent de : Si mon objet n'est pas NULL alors je mets mon objet, sinon, je lui attribue une valeur par défaut.
__________________
  • Pensez à consulter la FAQ BO
  • Quand votre problème est solutionné, n'oubliez pas de cliquer sur le bouton
Julien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 18h33   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 15
Points : 15
EDIT : Je reviens dessus car je ne suis pas sur d'avoir répondu à la question...
Si ton statut est à 'A', y'a t-il forcément une date de rdv renseigné ?
Je ne comprends pas pourquoi tu appliques un NVL pour attribuer NULL... Un NVL est l'équivalent de : Si mon objet n'est pas NULL alors je mets mon objet, sinon, je lui attribue une valeur par défaut.
__________________

Voici ce que j'ai en BDD :
Table client
Client 1
Client 2
Client 3

Table RDV
Client Date de rdv Statut
Client 1 01/01/1753 C
Client 1 01/02/2011 A
Client 3 01/02/2011 C

Je souhaite sortir la liste de tous les clients avec la date de rdv au statut A si elle existe soit le résultat suivant. Sinon un champ vide


Client 1 01/02/2011
Client 2 NULL
Client 3 NULL

En appliquant ta solution, je ne récupère toujours pas le Client 3
Jihane75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 08h31   #4
Modérateur
 
Avatar de Julien59
 
Julien Lizzul
Inscription : mars 2008
Messages : 1 103
Détails du profil
Informations personnelles :
Nom : Julien Lizzul
Âge : 25
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2008
Messages : 1 103
Points : 1 295
Points : 1 295
Ok, on va s'en sortir alors
Il faut faire une jointure simple entre tes 2 tables sans la condition statut='A'.
On garde la jointure externe pour récupérer tous les clients :
Code :
RDV.ID_Client(+) = Client.ID_Client
Ensuite, tu crées un objet qui va te ramener la date si le statut est à A, NULL sinon :
Code :
decode(statut,'A',Date de Rdv,NULL)
J'explique un peu ce que fait le decode :
Code :
Decode(TEST,val1,resultat1,val2,resultat2,...,valn,resultatn, restultat par défaut)
Ce qui équivaut à :
Code :
1
2
3
4
5
Si test = val 1 alors resultat1, sinon
Si test = val 2 alors resultat2, sinon
...
Si test = val n alors resultatn, sinon
resultat par défaut
Bon courage
__________________
  • Pensez à consulter la FAQ BO
  • Quand votre problème est solutionné, n'oubliez pas de cliquer sur le bouton
Julien59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 20h59   #5
Futur Membre du Club
 
Inscription : mai 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 49
Points : 15
Points : 15
Merci pour ta réponse mais elle ne fonctionne pas totalement.
Elle ne me ramenait pas les clients avec rdv annulé.


Du coup, j'ai trouvé la solution.
Jointure externe sur la table client
table_client.id_client = table_rdv.id_client(+) and table_rdv.statut='A'

Ensuite, dans mon objet un simple nvl()


Vous m'avez mis sur la piste donc je vous en remercie
Jihane75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h06.


 
 
 
 
Partenaires

Hébergement Web