我正在尝试找到一个解决方案,在下面的一个中撰写下一个查询:
Table1 {ID, NOM}
Table2 {ID, NOM_RESULT, STEP_ID, STEP_NOM, STEP_TYPE, STEP_PARENT}
Table3 {ID, MES}
首次查询 - >
(SELECT * FROM Table1 INNER JOIN Table2 ON Table1.ID =
Table2.NOM_RESULT WHERE Table2.STEP_NOM = 'Y1' AND Table2.STEP_TYPE =
'Y2' AND Table1.NOM = 'X1')
- >将结果存储在临时表(Table_temp)中:
Table_temp {ID, NOM_RESULT, STEP_ID, STEP_NOM,
STEP_TYPE, STEP_PARENT}
第二个查询 - >在每个Table_temp.STEP_ID的临时表上循环:
SELECT * FROM Table2 INNER JOIN Table3 ON Table3.ID =
Table2.STEP_PARENT WHERE Table2.STEP_PARENT = Table_temp.STEP_ID++
通过Table_temp.STEP_ID ++我的意思是在Table_temp.STEP_ID的每一行上循环 我使用一个简单的循环指令(在R语言中):
for(i in 1:nrow(Table_temp.STEP_ID)) {...
非常感谢
答案 0 :(得分:1)
使用IN
子句并逐步执行此操作。
select *
from table2 t2
inner join table3 t3 on t3.id = t2.step_parent
where t2.step_parent in
(
select step_id
from table2
where step_nom = 'Y1'
and step_type = 'Y2'
and nom_result in (select id from table1 where nom = 'X1')
);