2011-05-13 21 views
0

我試圖得到具有與請求類似的標題或子類別名稱的文章的結果。幫助MySQL查詢將2個表與LIKE AND OR語句結合使用?

Table 1 
Subcategory_ID Subcategory_Name 

Table 2 
Article_ID Title Subcategory_ID 

現在我需要從表2中獲取標題或子類別名稱與我們正在尋找的內容匹配的文章。

這裏是我有什麼,但我不能拿出剩下的

SELECT table1.*, table2.* FROM table1,table2 WHERE table2.title = '%keyword%' 

,其餘的我搞砸了......

什麼解決的辦法?

回答

1
SELECT table1.*, table2.* FROM table1, table2 
    WHERE table1.Subcategory_ID=table2.Subcategory_ID 
    AND (table2.title LIKE '%keyword%' OR table1.Subcategory_Name LIKE '%keyword%') 

隨着MySQL的INNER JOIN如果您在WHERE子句中使用 「table1.Subcategory_ID = table2.Subcategory_ID」 它是隱含的。

+0

DoXicK答案包括沒有進入表2表1的所有條目(LEFT JOIN),當我的不是(INNER JOIN)... – roirodriguez 2011-05-13 09:14:42

+0

事實上,我一整天都在寫左連接,所以我想我對它的心情很好;-)謝謝你的提高,修復它! – DoXicK 2011-05-13 09:25:17

+0

那麼,我剛剛評論的情況下,OP需要一個左連接。原來的帖子並沒有說明每個table1條目是否需要table2條目。也許這是有道理的,他有沒有table1條目(文章)沒有任何table1相關條目(子類別),這將使其成爲一個正確的加入......取決於他! :-) – roirodriguez 2011-05-13 10:47:24

0
SELECT table1.*, table2.* FROM table1 INNER JOIN table2 USING (Subcategory_id) 
    WHERE table2.title LIKE '%keyword%' 

您可以用ON (table1.subcategory_id = table2.subcategory_id)替換USING (Subcategory_id)

更多解釋請參閱MySQL Tutorial - Join

2

試試這個:

SELECT t2.Title, t1.Subcategory_Name 
FROM Table2 t2 JOIN Table1 t1 
ON t2.Subcategory_ID = t1.Subcategory_ID 
WHERE t2.title LIKE '%keyword%' OR t1.Subcategory_Name LIKE '%keyword%' 
0

可以由

select t1.*,t2.* 
    from `table2` t2 join `table1` t1 
    on t1.Subcategory_ID = t2.Subcategory_ID 
    where t2.title LIKE '%keyword%' or t1.Subcategory_Name LIKE '%keyword%'