-2

私はこのような5つのテーブルを持っています:

  • 表 1: PRIMARY_KEY,NAME,FK_TABLE2
  • 表 2: PRIMARY_KEY、FK_TABLE3
  • 表 3: PRIMARY_KEY、FK_TABLE4
  • 表 4: PRIMARY_KEY、FK_TABLE5
  • 表 5: PRIMARY_KEY、DIAGRAM_NAME

そして、私が欲しいのは、検索バーで名前を検索すると、NameからTable1、またDIAGRAM_NAMEからも返されることtable 5です。最初の部分は簡単です:

SELECT `TABLE1`.name 
from Table 1 
Where `TABLE1`.name LIKE '%$search%'

でも、第二部ではあなたの助けが必要です... ありがとう!

4

2 に答える 2

0

との値JOINを使用してテーブルに移動する必要があります。Primary KeyFK

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構文を学習するのに助けが必要な場合は、 join の優れた視覚的な説明があります

例のクエリでは、残りのテーブルに一致する行がない場合でもLEFT JOINすべての行を返すクエリを使用しました。table1

結合するすべてのテーブルに一致する行があることがわかっている場合は、INNER JOIN.

于 2013-02-04T14:39:14.393 に答える
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代わりに を使用してください。

幸運を。

于 2013-02-04T14:36:51.113 に答える