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

Langage SQL Discussion :

Jointure par colonne


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2023
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Jointure par colonne
    Bonjour,

    Je recherche la requête SQL permettant d'avoir le résultat suivants :
    L'idée est d'associer la table instance à la table objet

    Nom : SQL.PNG
Affichages : 147
Taille : 10,5 Ko


    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Bonnjour,

    Cela pourrait se résoudre avec une UNION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    with    OBJETS
        as  (   select  ID
                    ,   1       as  VAR
                    ,   VAR1    as  Q
                from    OBJET
            union
                select  ID
                    ,   2
                    ,   VAR2
                from    OBJET
            )
    select  NST.NOM
        ,   OBJ.Q
    from    INSTANCE    as  NST
        inner join
            OBJETS      as  OBJ
            on  NST.ID_OBJET = OBJ.ID
    order by NST.NOM
        ,   OBJ.VAR

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 386
    Points
    18 386
    Par défaut
    Pour al1_24, UNION ALL !
    Ou un UNPIVOT, c'est conçu pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    create table instance
    ( nom       char(5)
    , id_objet  number(1)
    );
     
    create table objet
    ( id_objet  number(1)
    , var1      char(2)
    , var2      char(2)
    );
     
    insert all
        into instance (nom, id_objet) values ('INS_1', 1)
        into instance (nom, id_objet) values ('INS_2', 2)
        into instance (nom, id_objet) values ('INS_3', 2)
        into objet (id_objet, var1, var2) values (1, 'aa', 'bb')
        into objet (id_objet, var1, var2) values (2, 'cc', 'dd')
    select * from dual;
     
    commit;
     
    with cte_object (id_objet, var, Q) as
    (
      select id_objet, var, Q
        from objet
     unpivot (Q for var in (var1, var2))
    )
      select i.nom, o.Q
        from instance   i
        join cte_object o on o.id_objet = i.id_objet
    order by 1, 2;
     
    NOM    Q
    -----  --
    INS_1  aa
    INS_1  bb
    INS_2  cc
    INS_2  dd
    INS_3  cc
    INS_3  dd

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 197
    Points : 8 414
    Points
    8 414
    Billets dans le blog
    17
    Par défaut
    Avec MySQL et UNION ALL :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with
        instance (nom, id_objet) as (values row ('INS_1', 1), row ('INS_2', 2), row ('INS_3', 2)),
        objet (id, var1, var2) as (values row (1, 'aa', 'bb'), row (2, 'cc', 'dd'))
    (select all i.nom, o1.var1 as q from instance as i inner join objet as o1 on i.id_objet = o1.id)
    union all
    (select all i.nom, o2.var2 from instance as i inner join objet as o2 on i.id_objet = o2.id)
    order by 1 asc, 2 asc;

    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INS_1	aa
    INS_1	bb
    INS_2	cc
    INS_2	dd
    INS_3	cc
    INS_3	dd

Discussions similaires

  1. Tri par colonne de n'importe quel StringGrid
    Par Dionyzos dans le forum Composants VCL
    Réponses: 3
    Dernier message: 02/07/2008, 16h47
  2. Réponses: 5
    Dernier message: 29/12/2005, 10h31
  3. affichage colonne par colonne
    Par tjoce dans le forum Langage
    Réponses: 1
    Dernier message: 02/11/2005, 18h19
  4. [HTML] Construire un tableau colonne par colonne ?
    Par Cthulhu 22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/05/2005, 15h31
  5. [VB.NET] Écriture par colonne streamwriter...?
    Par Pleymo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/04/2005, 15h32

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