MySQL加入关系表上的匹配

时间:2014-02-28 00:23:23

标签: mysql sql relational-database

我正在处理一个包含多个表的MySQL数据库模式,我想知道是否可以提交1个查询来获取我需要的所有数据。我遇到的一个打嗝是有一个表引用了另一个表的密钥ID。例如 -

  

表1:

________________________
|  id   |  profession   |
+---------+-------------+
| 1     |   stockbroker |   
| 2     |   doctor      |
| ...   |   ...         |

Tabel2:

____________________________
|  id        |  rehab      |
+------------+-------------+
| 1          | meth-head   |   
| 2          | alcoholic   |

Tabel3:

__________________________
|  table1_id |  table2_id |
+------------+------------+
|      1     |      2     |   

如果我只知道Table1.key_id,是否可以从Table2获取key_id值?

有些事情 -

  

SELECT table2.value1 FROM Table1,Table2,Table3 WHERE(   表3中table1_id的对应table2_id值

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果我正确地阅读了您的问题,看起来Table3是一个数据透视表,因此表1和表2具有多对多关系。您必须从Table1加入Table3然后再加入Table2

SELECT t2.value1, t2.value2
FROM Table1 t1
    INNER JOIN Table3 t3 ON t1.key_id = t3.table1_id
    INNER JOIN Table2 t2 ON t3.table2_id = t2.key_id
WHERE t1.key_id = [your value]

请记住,这可能会在表1中为每个值生成Table2的许多值,反之亦然。

答案 1 :(得分:0)

你没有提供太多信息,但

SELECT t2.value1
FROM table2 AS t2, table1 AS t1, table3 AS t3
WHERE t1.key_id = 1 
AND t1.key_id = t3.table1_id AND t3.table2_id = t2.key_id;

适用于那个有限的例子。

http://sqlfiddle.com/#!2/9cf42/5