2016-04-01 8 views
0

私は2つのテーブルで検索したいです。試しましたthisが働いていませんでした。mySQL:データベース内の複数のテーブルを検索するには?

<form method="post" 
<input type="text" name="search_keyword"> 
<input type="submit" name="button_search"> 
</form> 

MYSQL選択して、PHP:

if(isset($_POST['button_search'])) 
    { 
     $search_keyword = $_POST['search_keyword']; 

     $select = mysql_query("SELECT * from table_1 WHERE match(name_1) against ($search_keyword) 
     union all SELECT * from table_2 WHERE match(name_2) against ($search_keyword)"); 
     while($row = mysql_fetch_array($select)) 
     { 
     echo $row['question']; 
     echo $row['category_name']; 
     } 
    } 

TABLES:

私はエラー "不明な列...."

HTMLを取得しています例:

表1:

テーブル名:のtable_1

値(表1):

+-------+-------------+ 
| id_1 | name_1 | 
+-------+-------------+ 
| 1  | Phinoy  | 
| 2  | Go   | 
+-------+-------------+ 

表2:

テーブル名:table_2

の値:

+-------+-------------+ 
| id_2 | name_2 | 
+-------+-------------+ 
| 1  | Gi  | 
| 2  | Phinas  | 
+-------+-------------+ 

私は "P" または "Phで" 検索した場合、それは値 "PhinoyとPhinas" と表示されます。

+0

あなたはボックス –

+0

自動提案でタイプしながら、検索結果や自動提案として「PhinoyとPhinas」を表示します。 –

+0

可能な重複[here](http://stackoverflow.com/questions/394041/mysql-how-to-search-multiple-tables-for-a-string-existing-in-any-column) – roullie

答えて

1

まず、2つのテーブルを同時に比較するためにINNER JOINを使用する必要があります。このコードでは、表1と表2の結果を連結し、次にtable_1を呼び出しています。INNER JOINを使用すると、table_1の中にLIKE table_2という結果があり、列name_1およびname_2。

<?php 
    $query = "SELECT 
    CONCAT(table_1.name_1,' and ',table_2.name_2) 
    FROM table_1 INNER JOIN table_2 
    ON table_1.name_1 LIKE table_2.name_2"; 
    mysql_query($query); 
?> 
関連する問題