Mysql SQL查询从多个表中选择

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%' 但是第二部分我需要你的帮助。。。 谢谢大家! 您需要

我有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%'
但是第二部分我需要你的帮助。。。
谢谢大家!

您需要研究如何使用
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