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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 89
    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 Expert

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    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

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 89
    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 chevronné

    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
    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