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
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
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
Partager