2016-04-01 26 views
0

İki tabloda arama yapmak istiyorum. this denedim ama işe yaramadı.mySQL: Veritabanında birden fazla tablo nasıl aranır?

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

MYSQL SEÇ VE 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']; 
     } 
    } 

TABLOLAR:

Ben

HTML ".... Bilnmeyen Sütunu" hatası alıyorum Örneğin:

Tablo 1:

Tablo adı: table_1

değerler (Tablo 1):

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

Tablo 2:

Tablo adı: table_2

Değerler:

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

ben "P" veya "Ph" arama yaparsanız, bu değerleri "Phinoy ve Phinas" gösterecektir.

+0

arama sonucu VEYA oto öneri olarak "Phinoy ve Phinas" görüntülemek istediğiniz kutu –

+0

oto öneride türü ise. –

+0

Mümkün yinelenen [burada] (http://stackoverflow.com/questions/394041/mysql-how-to-search-multiple-tables-for-a-string-existing-in-any-column) aşağıda yanıtlanmıştır – roullie

cevap

1

Eh. İlk olarak, iki tabloyu aynı anda karşılaştırmak için bir INNER JOIN kullanmanız gerekir. Bu kodda, tablo 1 ve tablo 2'nin sonucunu yerine getiriyoruz, sonra biz table_1'i çağırıyoruz ve bir INNER JOIN ile tablo_2'yi karşılaştıracağız. Eğer tablo_1'de herhangi bir sonuç var LIKE table_2 ve sadece sadece sütun name_1 ve 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); 
?> 
İlgili konular