2011-04-19 61 views
3

我正在做一個多表全文查詢。但我遇到了一些問題。 我需要做一個查詢像mysql多表全文查詢問題?

(SELECT 
title,content,date,cat 
FROM article1 
WHERE 
cat='Science fiction' 
AND 
MATCH (title,content) 
AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
UNION 
(SELECT 
title,content,date 
FROM article3 
WHERE MATCH (title,content) 
AGAINST 
('+Harry +Potter' IN BOOLEAN MODE)) 
Order By date DESC LIMIT 10 

卻引起Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

如果我刪除cat='Science fiction' AND它可以通過測試。

問題在哪裏?如果我想查詢我想要的內容:首先全文查詢需要滿足cat='Science fiction'。非常感謝。

回答

2

您正在嘗試UNION在一起的結果集返回不同的列數。你的第一個查詢返回4列(標題,內容,日期,貓),而你的第二個查詢返回3(標題,內容,日期)。每個查詢必須返回相同數量的列。

2

是否mysql_query返回FALSE,表示解析查詢時出現問題?如果你盲目地將「FALSE」傳遞給mysql_fetch_array(),我期望看到那種錯誤。

0

嘗試

cat LIKE 'Science fiction' 
+0

還沒有通過測試。 – cj333 2011-04-19 16:07:00

2

我不知道爲什麼刪除cat LIKE 'Science fiction'使查詢工作。正如所寫,它不應該在任何情況下工作。 UNION要求這兩部分查詢產生具有兼容類型的相同數量的列。您的UNION在第一部分有4列,第二部分有3列:

SELECT title, content, date, cat FROM article1 
UNION 
SELECT title, content, date  FROM article3 
+0

@Joe Stefanelli,那麼如何解決我遇到的問題?如果我需要這樣的查詢。 – cj333 2011-04-19 16:14:13

+1

@ cj333:將cat列添加到查詢的第二部分。如果第3條中沒有適當的列使用,則使用常數 – dnagirl 2011-04-19 16:18:37

+1

@ cj333:如果第二個查詢中不需要cat列,那麼將第二個查詢修改爲'SELECT title,content,date,NULL AS貓......' – 2011-04-19 16:26:02