尝试使用join进行3个表的查询

时间:2017-10-27 20:43:48

标签: mysql sql

我正在尝试找到一个解决方案,在下面的一个中撰写下一个查询:

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)) {...

非常感谢

1 个答案:

答案 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')
);