如何在MySQL中进行多连接查询?

时间:2011-02-21 14:53:45

标签: mysql join

我是SQL的新手,发现我不太明白何时使用哪个连接。子查询似乎也令人困惑。我已经设置了以下表格,并且我正在尝试获得特定的结果:

`+--------------------------+   +---------------+  +---------------+  +---------------+`
`|          Table_A         |   |   Table_B     |  |   Table_C     |  |   Table_D     |`
`+--------------------------+   +---------------+  +---------------+  +---------------+`
`| id | f2 | f3 | f4 | d_id |   | a_id  | c_id  |  |  id  |   fc   |  |  id  |   fs   |`
`+--------------------------+   +---------------+  +---------------+  +---------------+`

这就是我想要的:

`+----------------------------------+`
`| a.f2 | a.f3 | a.f4 | d.fs | c.fc |`
`+----------------------------------+`

我发现我可以使用以下查询获得前四列:

Select t1.f2, t1.f3, t1.f4, t2.fs
    From Table_A AS t1 INNER JOIN Table_D AS t2
    ON t1.d_id = t2.id;

如何从A.id到C.fc?我无法弄清楚如何获得第五列,更不用说与前一个查询一起。这与我在最后一栏中得到的结果大致相同:

Select t1.flow_control
    FROM Table_D AS t1 INNER JOIN policy t2
    ON t1.id = t2.c_id;

1 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

Select t1.f2, t1.f3, t1.f4, t2.fs, t3.fc
    From Table_A AS t1
    INNER JOIN Table_D AS t2 ON t1.d_id = t2.id
    INNER JOIN Table_B AS jointable ON t1.id = jointable.a_id
    INNER JOIN Table_C AS t3 ON jointable.c_id = t3.id;

第一次加入是您最初的加入。第二个用于'链接表',它表示Table_A和Table_C之间的HABTM关系。一旦你加入了它,你做第三次连接'连接'到表C,这样你就可以获得'fc'字段。所以基本上第一次连接只适用于Table_D,而另外两个JOIN会带你到最后一个字段。

你可以在一个语句中有多个JOIN链接到完全不同的表格,如果这就是你需要的......就像连接点/跟随关系一样:)