Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
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/03/2011, 16h49   #1
Futur Membre du Club
 
Inscription : mai 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 83
Points : 19
Points : 19
Par défaut Reconstitution d'une table à partir de 2 autres tables

Bonjour à tous,

Je vous explique ma problématique :
Je dispose d'une table de référence (Reference) et d'une seconde table (TableSource) qui ressemblent à ceci :
Reference
Citation:
Produit -- Option
1 -----------1
1 -----------2
1 -----------3
1 -----------4
1 -----------5
1 -----------6
1 -----------7
1 -----------8
TableSource
Citation:
Produit -- Option - Indicateur
1 -----------0------------O
1 -----------1------------N
1 -----------3------------N
J'aimerais alimenter une 3ème table (TableCible) qui serait la reconstitution de la table TableSource en fonction de la table Reference en considérant que l'option 0 de TableSource contient toutes les autres options non définies dans cette même table. (Ici, l'option 0 regroupe les options 2,4,5,6,7,8)

Ma table TableCible ressemblerait à ceci :

TableSource
Citation:
Produit -- Option -- Indicateur
1 -----------1------------N
1 -----------2------------O
1 -----------3------------N
1 -----------4------------O
1 -----------5------------O
1 -----------6------------O
1 -----------7------------O
1 -----------8------------O
En espérant avoir été clair, je vous remercie d'avance

Cordialement,
Maxime
mxh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 09h27   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 300
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 300
Points : 1 504
Points : 1 504
Envoyer un message via AIM à mpeppler
Hmmm. Je pense qu'on doit pouvoir y arriver comme ceci:

Code :
1
2
3
4
5
6
7
8
 
SELECT *
FROM t1
JOIN t2
ON t2.produit = t1.produit
AND ((t2.OPTION = t1.OPTION AND t2.indicateur = 'N' )
OR (t2.OPTION = 0 AND t2.indicateur = 'O' 
AND NOT EXISTS (SELECT * FROM t2 t WHERE t.produit = t2.produit AND t.OPTION = t1.OPTION AND t.indicateur = 'N')))
Pas très joli, mais ça devrait marcher. Il y a probabelement d'autres façons d'exprimer la même chose...

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 09h59   #3
Futur Membre du Club
 
Inscription : mai 2006
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 83
Points : 19
Points : 19
Merci Michael pour cette piste.

Malheureusement, j'ai oublié de préciser que je ne dois pas faire de test sur la colonne indicateur.
La seule hypothèse que je connaisse :
C'est le fait que l'indicateur de l'option 0 est toujours différent de l'indicateur des autres options dans la table TableSource (ici option 1 et 3).

En gros, j'envisage ma problèmatique de la manière suivante :
1 - Je pars de la table Reference
2 - Je boucle sur toutes les options
3 - Je teste si l'option est présente dans TableSource
4 - Si elle est présente, je lui affecte l'indicateur qui va bien dans TableCible
5 - Si elle n'est pas présente, je lui affecte l'indicateur de l'option 0 dans TableCible

Voilà, le plus dur étant de rassembler tout cela dans une requête.
Une question que je me pose avant tout : est-ce réalisable en une seule requête ?

Merci
Maxime
mxh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 16h04   #4
Membre confirmé
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 181
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 181
Points : 267
Points : 267
Avec PO( P ,O ) la table Produit - Option
et POI ( p ,o ,i ) la table Produit - Option - Indicateur
Code :
1
2
3
4
5
6
7
8
SELECT P, O, isnull(I.i,I0.i)
FROM  PO  P
     ,POI I 
     ,POI I0
WHERE P   *= I.p
AND   O   *= I.o
AND   P   *= I0.p
AND   I0.o = 0
ou bien une sous requete dans le isnull ...
Jean.Cri1 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 23h33.


 
 
 
 
Partenaires

Hébergement Web