IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sybase Discussion :

Reconstitution d'une table à partir de 2 autres tables


Sujet :

Sybase

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 89
    Points : 51
    Points
    51
    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
    Produit -- Option
    1 -----------1
    1 -----------2
    1 -----------3
    1 -----------4
    1 -----------5
    1 -----------6
    1 -----------7
    1 -----------8
    TableSource
    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
    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

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    Hmmm. Je pense qu'on doit pouvoir y arriver comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    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

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Avec PO( P ,O ) la table Produit - Option
    et POI ( p ,o ,i ) la table Produit - Option - Indicateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

Discussions similaires

  1. UPDATE d'une Table à partir de deux autres Tables
    Par Marc_27 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/07/2009, 14h13
  2. Réponses: 5
    Dernier message: 17/10/2008, 15h41
  3. Update d'une table à partir de deux autres tables
    Par Peewee766 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/05/2008, 19h08
  4. Réponses: 4
    Dernier message: 20/03/2007, 09h54
  5. creer une autre table à partir d'une requete
    Par papou34 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 22h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo