我有三张桌子:
tbl_trans
trans_id volume
a 10
b 20
c 30
tbl_primary_id
trans_id primary_id
a QQQ
b b
c RRR
tbl_name
trans_id name
a Billy
QQQ Tom
b Lizzy
RRR Peter
我需要加入name
到tbl_name
的{{1}}列。直接内部联接不起作用,因为我需要tbl_trans
作为中间人来返回此内容:
primary_id
最好的方法是什么?我使用子查询但不确定是否有更直接的声明。
(旁注:这些都不是我的架构。不幸的是,我不能以任何方式修改设计。)
答案 0 :(得分:2)
只有2个加入
select tt.trans_id, tn.trans_id, tt.volume, tn.name
from tbl_trans tt
inner join tbl_primary_id tti on tti.trans_id = tt.trans_id
inner join tbl_name tn on tn.trans_id = tti.primary_id
顺便说一句,您的列命名有点奇怪:primary_id
中的tbl_primary_id
与trans_id
中的tbl_name
相关
select tt.trans_id as tid, tti.primary_id as tid2, tt.volume, tn.name
from tbl_trans tt
inner join tbl_primary_id tti on tti.trans_id = tt.trans_id
inner join tbl_name tn on tn.trans_id = tti.primary_id or tn.trans_id = tti.trans_id
请参阅sqlfiddle