2012-08-08 55 views
1

我有一個名爲news的表和這兩個代碼片段,我想創建一個搜索引擎,通過keywords表掃描。在一個表連接並運行得非常好的情況下,向查詢添加額外的表將會更清晰。如何添加多個表到這個查詢

我的任務是創建一個從表中返回行的搜索引擎。搜索引擎是基於關鍵字的,對於特定的術語比如'紐約時報'非常適用,但是如果我想輸入新聞,這就是所有新聞網站都按ID排序的地方。但有時候,與CNN不同的是,有關關鍵詞'news'的完全不同的詞會在表中彈出相當高的字符串,因爲id。用新表格,組織表格會容易得多。這樣,如果輸入的術語是「新聞」,網站將按ID排序,即使它們在其他表格上發生衝突,它們仍然按ID排序。

雖然我的查詢比傳統的查詢不同的一點,我不知道該怎麼

  1. 通過UNION

  2. 添加表與某種形式的LEFT JOIN標籤。

我的查詢是下面,我很想有人解釋:1)什麼是錯的只是 B)告訴我,或粘貼下面代碼:

<?php 
if(isset($_GET['k'])){ 
    $k = $_GET['k']; 
}else{ 
    $k = ''; 
} 
$k = (isset($_GET['k']))? trim($_GET['k']) : ''; 
$terms = (strlen($k) > 0)? explode(' ', $k) : Array(); 


/* The code below is from a different part of the script */ 

$query = " SELECT * FROM scan WHERE "; 

$terms = array_map('mysql_real_escape_string', $terms); 
$i = 0; 
foreach ($terms as $each) { 
    if ($i++ !== 0){ 
     $query .= " AND "; 
    } 
    $query .= "keywords LIKE '%{$each}%'"; 
} 

回答

2

我不知道正是你想做的事,但是這可能幫助:

$query = " SELECT * FROM scan, news WHERE scan.news_id = news.id AND "; 

$terms = array_map('mysql_real_escape_string', $terms); 

foreach ($terms as $each) { 
    $query .= "AND scan.keywords LIKE '%{$each}%'"; 
} 

您可以通過查詢添加條件,並從兩個表中選擇做兩個表之間的聯合。條件是確保兩個表中的公共列是相等的。