我意识到我在上一篇文章中犯了一个错误,这应该更清楚了。
假设我有一张包含ID和当前ID的表:
tbl_id
id cur_id value
aa zz 5
zz zz 10
bb yy 2
yy yy 11
假设我有另一张价格表:
tbl_price
id price
aa 200
bb 100
我需要返回与cur_id
中每个id
相关联的tbl_price
的价格和价值:
cur_id value price
zz 10 200
yy 11 100
我遇到的问题是返回正确的value
。当我进行内部联接时:
SELECT
tbl_id.cur_id,
tbl_id.value,
tbl_price.price
FROM
tbl_price
INNER JOIN tbl_id
ON tbl_id.id = tbl_price.id
这给了我这些结果:
cur_id value price
zz 5 200
yy 2 100
我知道为什么会发生这种情况,因为联接的工作方式。但是,我不知道如何再次重新加入该表格以获得value
tbl_id.id = tbl_id.cur_id
所在的{{1}}。我是否只是再次重新加入桌面?
答案 0 :(得分:2)
您还需要一个自我加入才能获得所需的结果:
SELECT
i1.cur_id,
i2.value,
p.price
FROM
tbl_price p
INNER JOIN tbl_id i1 ON i1.id = p.id
INNER JOIN tbl_id i2 ON i1.cur_id = i2.id
我们的想法是再次加入ID表,并从第二次加入中获取一次性ID。
答案 1 :(得分:0)
尝试添加where语句:
INNER JOIN tbl_id
ON tbl_id.id = tbl_price.id
WHERE tbl_id.id = tbl_id.cur_id