我想在一个数据库中的一个选择查询中内连接超过3个表所有这些表都有rm_id作为公共列但我想在一个SQL查询中显示所有表的行是否可能如果它然后我会听到请求你提供一些代码
select * from
bk_det inner join
bk_rep inner join
bk_sec inner join
mut_det inner join
rm_det inner join
soil_det
on
bk_det.rm_id = bk_rep.rm_id = bk_sec.rm_id = mut_det.rm_id = rm_det.rm_id = soil_det.rm_id
答案 0 :(得分:5)
每个内连接都需要一个on子句。例如
select * from a
inner join b on a.id = b.id
inner join c on b.id = c.id
答案 1 :(得分:2)
您缺少每个联接的ON
子句:
select *
from bk_det
inner join bk_rep
on bk_det.rm_id = bk_rep.rm_id
inner join bk_sec
on bk_rep.rm_id = bk_sec.rm_id
inner join mut_det
on bk_sec.rm_id = mut_det.rm_id
inner join rm_det
on mut_det.rm_id = rm_det.rm_id
inner join soil_det
on rm_det.rm_id = soil_det.rm_id
注意:您必须检查连接条件列名称,因为我不知道您的表格结构
如果您需要有关学习联接语法的帮助,请参阅great visual explanation of joins。
由于您使用INNER JOIN
,如果每个表中都存在rm_id
,则会返回记录。
您可能需要使用LEFT JOIN
:
select *
from bk_det
left join bk_rep
on bk_det.rm_id = bk_rep.rm_id
left join bk_sec
on bk_rep.rm_id = bk_sec.rm_id
left join mut_det
on bk_sec.rm_id = mut_det.rm_id
left join rm_det
on mut_det.rm_id = rm_det.rm_id
left join soil_det
on rm_det.rm_id = soil_det.rm_id