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
Merci d'avance pour votre aide![]()
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
Merci d'avance pour votre aide![]()
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager