【发布时间】:2017-11-08 17:21:00
【问题描述】:
在开始之前,是的,我彻底尝试搜索了许多关于 JOINS/INNER JOINS/OUTER JOINS/FULL JOINS 的教程,但我不太确定什么我正在寻找这么一点指导或简单地指点我正确的方向会非常有帮助。我会尽量说清楚。
所以基本上,我有三张桌子
富
| FooID | name | data |
1 Name1 Data1
2 Name2 Data2
3 Name3 Data3
4 Name4 Data4
酒吧
| BarID |
1
2
矩阵
| BarID | FooID|
1 2
1 3
1 4
2 1
2 3
所以我要寻找的是,我基本上有 BarID(为了清楚起见,我们假设它是 1)。我想从表 Matrix 中获取与 BarID 相关的所有行,这样我就可以在 Foo 中检索与它相关的行(例如, BarID = 1,所以我应该得到 Foo 中的第 2、3 和 4 行,如果 BarID 为 2,我将得到 1 和 3,依此类推)。
我正在尝试类似于:
SELECT Foo.FooID, Foo.name, Foo.data
FROM Bar
JOIN Matrix ON Matrix.BarID = 1 // The 1 is passed in, in this example
JOIN Foo ... // And this is where I'm stuck
这对我想要完成的事情有意义吗?我知道这很奇怪。将不胜感激任何帮助指点。提前谢谢!
【问题讨论】:
-
您似乎对连接的工作方式存在根本性的误解。通常
JOIN表,其中ON相关字段/列将来自这些单独表的相关数据链接在一起。然后,您可以选择使用WHERE和任何条件(例如 BarID = 1)来将哪些数据限制为SELECT。 -
@tonypdmtr 谢谢.. 您确实意识到问题已经得到解答,对吗? SQL 是我今天开始学习的一门语言,如果我没有完整地学习所有内容,很抱歉。有一些方法可以在不居高临下的情况下提供建议/帮助。显然我有一个误解,这就是我在 stackoverflow 上提问的全部原因。
-
那么,你完全误解了我的评论:)
-
@tonypdmtr 我理解你的评论很好,我很感激你的建议。但是,如果您在提供上述建议之前试图贬低我,您不会获得奖励积分。正如我所说,我很欣赏这些信息,谢谢,我会在继续学习时考虑到这一点。
-
让我再试一次。我的评论不是提供答案,因为很明显你得到了答案。但是答案只是给了您有效的方法,而不是您尝试中的错误。我的评论是为了帮助您更好地理解
JOIN和WHERE之间的区别。现在,你让我想知道:为什么首先要打扰?祝你好运。