我有5张这样的表:
我想要的是当我在搜索栏中搜索名称时,它会从Name
返回Table1
,并从DIAGRAM_NAME
返回table 5
。
第一部分很简单:
SELECT `TABLE1`.name
from Table 1
Where `TABLE1`.name LIKE '%$search%'
但是对于第二部分我需要你的帮助...... 谢谢!
答案 0 :(得分:0)
您需要考虑使用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
。
答案 1 :(得分:0)
您需要使用JOIN
和Primary Key
值来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
语法,这里有一个很棒的visual explanation of joins。
我在我的示例查询中使用了LEFT JOIN
,即使其余表中没有匹配的行,也会返回table1
的所有行。
如果您知道要加入的所有表格中都有匹配的行,那么您可以使用INNER JOIN
。