2011-03-27 27 views
0
SELECT 'Q' AS TYPE, 
     q.question AS value, 
     q.date 
    FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE, 
     q.question AS value, 
     a.date 
    FROM answers a, 
     questions q 
WHERE a.question_id = q.id 
    AND WHERE a.user_id =39 
ORDER BY `date` DESC 

數據庫設計:這個UNION ALL mysql查詢有什麼問題?

  • 問題{ID,USER_ID,問題,日期}
  • 解答{ID,question_id,USER_ID,接聽,日期}

錯誤:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE a . user_id = 39 ORDER BY date DESC

+0

'WHERE'關鍵字每個SELECT語句只使用一次。刪除重複,並且您的查詢將工作。 – 2011-03-27 17:22:08

回答

2

在查詢的下半部分有兩個WHERE子句。你需要從字面上刪除最後一個單詞WHERE。錯誤描述是你需要的。

1

「WHERE」出現兩次。其中x = ..... AND ....

1

有一個額外的地方a.user_id = 39。您只使用關鍵字在WHERE子句的開始(a.question_id = q.id AND a.user_id = 39)

SELECT 
'Q' AS TYPE , q.question AS value, q.date 
FROM questions q 
WHERE q.user_id =39 
UNION ALL 
SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39 
ORDER BY `date` DESC 
1

由於錯誤試圖解釋:對於第二個選擇,你只需要把一個「WHERE」。

SELECT 'A' AS TYPE , q.question AS value, a.date 
FROM answers a,questions q 
WHERE a.question_id = q.id 
AND 
a.user_id =39