我正在处理一个包含多个表的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值
非常感谢任何帮助。
谢谢!
答案 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;
适用于那个有限的例子。