Mysql SQL查询从多个表中选择
我有5张这样的桌子:Mysql SQL查询从多个表中选择,mysql,sql,database,Mysql,Sql,Database,我有5张这样的桌子: 表1:主键、名称、FK\U表2 表2:主键,FK\u表3 表3:主键,FK\u表4 表4:主键,FK\U表5 表5:主键、图表名称 我想要的是,当我在搜索栏中搜索名称时,它会从Table1返回name,也会从table5返回DIAGRAM\u name。 第一部分很简单: SELECT `TABLE1`.name from Table 1 Where `TABLE1`.name LIKE '%$search%' 但是第二部分我需要你的帮助。。。 谢谢大家! 您需要
- 表1:主键、名称、FK\U表2
- 表2:主键,FK\u表3
- 表3:主键,FK\u表4
- 表4:主键,FK\U表5
- 表5:主键、图表名称
Table1
返回name
,也会从table5
返回DIAGRAM\u name
。
第一部分很简单:
SELECT `TABLE1`.name
from Table 1
Where `TABLE1`.name LIKE '%$search%'
但是第二部分我需要你的帮助。。。
谢谢大家! 您需要研究如何使用
JOIN
:
SELECT T.Name, T5.Diagram_Name
FROM Table1 T
JOIN Table2 T2 ON T.FK_TABLE2 = T2.PRIMARY_KEY
JOIN Table3 T3 ON T2.FK_TABLE3 = T3.PRIMARY_KEY
JOIN Table4 T4 ON T3.FK_TABLE4 = T4.PRIMARY_KEY
JOIN Table5 T5 ON T4.FK_TABLE5 = T5.PRIMARY_KEY
WHERE T.Name LIKE '%$search%'
如果要返回没有匹配图表名称的名称,请改用LEFT JOIN
祝您好运。您需要使用
主键
和FK
值加入表:
select t1.name, t5.DIAGRAM_NAME
from table1 t1
left join table2 t2
on t1.FK_TABLE2 = t2.PRIMARY_KEY
left join table3 t3
on t2.FK_TABLE2 = t3.PRIMARY_KEY
left join table4 t4
on t3.FK_TABLE3 = t4.PRIMARY_KEY
left join table5 t5
on t4.FK_TABLE4 = t5.PRIMARY_KEY
Where t1.name LIKE '%$search%'
如果您需要学习JOIN
语法的帮助,这里有一个很好的方法
我在示例查询中使用了左联接
,它将返回表1
中的所有行,即使其余表中没有匹配的行
如果您知道要加入的所有表中都有一个匹配的行,那么您可以使用
内部联接
您可能指的是T5.Diagram\u Name