0

次のように、データベースに 3 つのテーブルがあります。

kill_list
+-----------------------------------------------+
| id |  batch_name  | execution_date  | status  |
+-----------------------------------------------+
| 1  |Shallow Minds |   2013-10-29    |    0    |
+-----------------------------------------------+
| 2  | Brain Dead   |   2013-10-26    |    1    |
+-----------------------------------------------+

kill_list_designation
+------------------------------+
| id |  kill_list    | target  |
+------------------------------+
| 1  |      1        |    1    |
+------------------------------+
| 2  |      1        |    2    |
+------------------------------+
| 3  |      2        |    4    |
+------------------------------+
| 4  |      1        |    5    |
+------------------------------+
| 5  |      2        |    3    |
+------------------------------+

targets
+--------------------------------+
| id |  firstname    | lastname  |
+--------------------------------+
| 1  |      John     |  Smith    |
+--------------------------------+
| 2  |      Mark     |  Hall     |
+--------------------------------+
| 3  |      Kim      |  Stone    |
+--------------------------------+
| 4  |      Rob      |  Reeds    |
+--------------------------------+
| 5  |      Ivan     |  Gay      |
+--------------------------------+

現在、このクエリを使用して kill_list テーブルのクエリを検索することしかできません

SELECT * 
FROM kill_list 
WHERE batch_name     LIKE CONCAT('%', 'query term', '%') 
   OR execution_date LIKE CONCAT('%', 'query term') 
   OR status         LIKE CONCAT('%', 'query term', '%');

このクエリでは、キル リストの詳細のみを取得できますが、リストに含まれるターゲットは取得できません。「 Mark 」を検索すると、クエリはkill_listMark が含まれる #1の詳細を表示するはずです。

用語を入力して、キル リストのすべてのターゲットを取得するにはどうすればよいですか? クエリは、用語をターゲットの名前と比較できる必要があります。どうもありがとう!

4

2 に答える 2

0

このようにしてみてください

SELECT * 
FROM kill_list A
JOIN kill_list_designation B ON A.id=B.kill_list
JOIN targets C ON B.target=C.id
WHERE A.batch_name LIKE CONCAT('%', 'query term', '%') 
   OR A.execution_date LIKE CONCAT('%', 'query term') 
   OR A.status LIKE CONCAT('%', 'query term', '%')
   OR C.firstname LIKE CONCAT('%', 'query term', '%') 
   OR C.laststname LIKE CONCAT('%', 'query term', '%');
于 2013-10-28T09:02:28.673 に答える