【问题标题】:SQL - Join Three Tables with common link in third tableSQL - 用第三个表中的公共链接连接三个表
【发布时间】: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 我理解你的评论很好,我很感激你的建议。但是,如果您提供上述建议之前试图贬低我,您不会获得奖励积分。正如我所说,我很欣赏这些信息,谢谢,我会在继续学习时考虑到这一点。
  • 让我再试一次。我的评论不是提供答案,因为很明显你得到了答案。但是答案只是给了您有效的方法,而不是您尝试中的错误。我的评论是为了帮助您更好地理解JOINWHERE 之间的区别。现在,你让我想知道:为什么首先要打扰?祝你好运。

标签: mysql sql sqlite join


【解决方案1】:

您似乎想要一个简单的JOINWHERE

select f.*
from foo f join
     matrix m
     on f.fooid = m.fooid
where m.barid = 1;

您不需要 bar 表,因为您正在传递 id。我想你可能想多了这个问题。

【讨论】:

  • 宾果游戏!它在那里。我知道我想得有点太用力了,看起来我的思维过程让我搞砸了,我需要第三张桌子。就像我的 Matrix.BarID = 1 部分正确,并且我知道这就是我需要它的地方,我只是不知道如何正确格式化它。谢谢你的简单回答,这实际上只是帮助我更好地理解了 JOIN/WHERE 组合。如果允许,我会在 5 分钟内将此答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多