SQL - 在第三个表

时间:2017-11-08 17:21:01

标签: mysql sql sqlite join

在我开始之前,是的,我彻底尝试了很多关于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 )。我希望从 BarID 表中获取与 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

这是否有意义我想要完成的事情?我知道这很奇怪。将不胜感激任何指点。提前谢谢!

1 个答案:

答案 0 :(得分:3)

您似乎想要一个简单的JOINWHERE

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

您不需要bar表,因为您传入的是id。我想你可能一直在思考这个问题。