具有重复值的SQL连接
我意识到我在上一篇文章中犯了一个错误,这应该更清楚 假设我有一个带有ID和当前ID的表:具有重复值的SQL连接,sql,sql-server,Sql,Sql Server,我意识到我在上一篇文章中犯了一个错误,这应该更清楚 假设我有一个带有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 我需要返回与tbl\u price中的每个id关联的cur\u id的价格和值: cur
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
我需要返回与tbl\u price
中的每个id
关联的cur\u id
的价格和值:
cur_id value price
zz 10 200
yy 11 100
我遇到的问题是返回正确的值。当我进行内部联接时:
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
我明白为什么会发生这种情况是因为连接的工作方式。但是,我不知道如何再次重新加入表以获得适当的值
wheretbl\u id.id=tbl\u id.cur\u id
。我是否需要以某种方式重新加入表?尝试添加where语句:
INNER JOIN tbl_id
ON tbl_id.id = tbl_price.id
WHERE tbl_id.id = tbl_id.cur_id
您需要再进行一次自联接才能获得所需的结果:
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的ID
不是,我需要它返回id=cur\u id的值,而不是id cur\u id所在行上的值。例如,id=aa的值为5。然而,它的cur_id是zz,它的值为10。我需要把那十个还给你。我终于明白你的意思了——我被原来帖子上的打字错误吓坏了。现在我明白你想做什么了。很抱歉,谢谢你的帮助。谢谢,我刚刚在SQLFiddle上做了同样的事情,这证实了我的想法。现在,正如你所展示的那样,我刚刚重新加入这个团队,它工作得很好!谢谢