2013-11-29 118 views
1

我編寫了代碼以從不同的表中搜索關鍵字。這是我的代碼:MySQL全文搜索返回重複行

$stmt = $conn->prepare("SELECT DISTINCT rest.*, 
MATCH(rest.resname, rest.address) AGAINST(:keyword) as a, 
MATCH(cuisine.cuisine) AGAINST(:keyword) as b, 
MATCH(recc.recc) AGAINST(:keyword) as c, 
MATCH(emenu.menu, emenu.menudesc) AGAINST(:keyword) as d, 
MATCH(facilities.fac) AGAINST(:keyword) as e, 
MATCH(serv.service) AGAINST(:keyword) as f 
FROM rest 
INNER JOIN cuisine ON rest.resID = cuisine.resID 
INNER JOIN recc ON rest.resID = recc.resID 
INNER JOIN emenu ON rest.resID = emenu.resID 
INNER JOIN facilities ON rest.resID = facilities.resID 
INNER JOIN serv ON rest.resID = serv.resID 
WHERE 
(
MATCH(rest.resname, rest.address) AGAINST(:keyword) 
OR MATCH(cuisine.cuisine) AGAINST(:keyword) 
OR MATCH(recc.recc) AGAINST(:keyword) 
OR MATCH(emenu.menu, emenu.menudesc) AGAINST(:keyword) 
OR MATCH(facilities.fac) AGAINST(:keyword) 
OR MATCH(serv.service) AGAINST(:keyword) 
) 
AND (aktif = :aktif) AND (negeri = :negeri) ORDER BY resID DESC LIMIT :rowsperpage OFFSET :offset"); 

$stmt->bindValue(':keyword', $_GET["keyword"], PDO::PARAM_STR); 
$stmt->bindValue(':negeri', $negeri, PDO::PARAM_STR); 
$stmt->bindValue(':aktif', $active, PDO::PARAM_STR); 
$stmt->bindValue(':rowsperpage', (int) $rowsperpage, PDO::PARAM_INT); 
$stmt->bindValue(':offset', (int) $offset, PDO::PARAM_INT); 
$stmt->execute(); 

此查詢涉及6個表。

根據我的想法,我真的認爲如果在不同的表中有2個相同的標籤,它會返回2個結果。

任何人都可以幫助我嗎?謝謝

+0

你爲什麼不列出只有一場比賽中的所有領域? –

+0

然而,重複是來自連接,我猜 –

回答

2

請嘗試使用GROUP BY您的主表ID,因此它不會返回重複的行。 你可以看到一個基本的例子here