2011-11-24 214 views
0

我一直有一個問題試圖查詢3個表和2與相同的字段。使用PHP和MySQL從兩個不同的表中查詢相同的字段MYSQL

例如

表A表B 表C

關鍵字查詢將是一個搜索詞。

SELECT 
    title 
FROM TableA as A 
LEFT JOIN TableC as C 
    ON TableA.id=TableC.id 
WHERE 1 
    AND TableC.private='0' 
    AND ( 
     title LIKE '".$keyword."%' 
    OR title LIKE '%".$keyword."%' 
    OR title LIKE '%".$keyword."' 
    OR title = '".$keyword."' 
    ) 

我遇到的問題是我還需要同時搜索TableB for title並根據相同的關鍵字進行匹配。如何將TableB標題字段合併到查詢中?

因此,如果有標題= America的TableA和標題= American的TableB,它將顯示來自兩個表的結果,因爲它會匹配LIKE查詢。

然後用PHP顯示結果。如果TableA或TableB匹配顯示結果。並通過數組等循環等。

它必須在查詢中,因爲我用它作爲搜索參數。

TIA

+0

請去閱讀[PDO](http://php.net/PDO)和事先準備好的聲明。併購買/竊取自己[SQL Antipatterns](http://pragprog.com/book/bksqla/sql-antipatterns)書。 –

+0

@tereško我得看看更多的SQL教程。我需要更多的幫助,而不是PHP。 thx –

回答

3

做一個聯盟:

SELECT title FROM TableA as A LEFT JOIN TableC as C ON TableA.id=TableC.id WHERE 1 AND TABLEC.private='0' AND (title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
      OR title LIKE '%".$keyword."' OR title = '".$keyword."') 
UNION 
SELECT title FROM TableB as B LEFT JOIN TableC as C ON TableB.id=TableC.id WHERE 1 AND TABLEC.private='0' AND (title LIKE '".$keyword."%' OR title LIKE '%".$keyword."%' 
      OR title LIKE '%".$keyword."' OR title = '".$keyword."') 
+0

好吧,我認爲工會必須在表格中有相同的列。我會試試看。 –

+0

噢,這是行不通的,因爲TableB沒有TableA所做的ID表。所以我不能做同樣的查詢。它們不是相同的表格。假設一張桌子是歌曲表格,另一張桌子是最喜歡的桌子。兩者都有標題字段,可以有不同的數據。如果有一場比賽,我想讓它顯示歌曲名稱或最喜歡的標題,或者有很多比賽。 –

+0

聯合中的每個查詢都必須具有相同數量的列,每個對應列的數據類型相同。其他一切都是有效的。 –

相關問題