我需要提出一個查詢來提取所有用戶的問題,併爲每個問題提供3個來自數據庫的答案。這個查詢需要儘可能高效。在1個單個查詢中獲取問題和答案
我有表:
questions:
id
user_id
title
date_created
date_updated
answers:
id
question_id
user_id
body
date_created
我能做到在1個單查詢?基本上我需要顯示問題,與用戶表聯繫以獲取用戶名,顯示3個問題的答案併爲每個答案顯示發佈者的用戶名。
我DIT是這樣的:
SELECT questions.*, GROUP_CONCAT(answers.id) as answers
FROM (questions)
JOIN users ON users.id = questions.user_id
LEFT JOIN answers ON answers.question_id = questions.id
WHERE questions.user_id = '1'
GROUP BY questions.id
ORDER BY questions.date_updated desc
LIMIT 3
不過這還沒完,也都不盡如人意。
我想有一種方法以避免'GROUP_CONCAT' ......並且你應該。 :-) – Smandoli 2012-07-10 20:51:37
我試着組連續作出1查詢...因爲我有一個用戶有很多問題和許多答案的問題 – vsergiu 2012-07-10 20:54:43
要求包含用戶名與答案文本使用'CONCAT'有問題。而且,還有一種更自然的方式:可以在查詢中查詢。這仍然會被稱爲「單一查詢」,我預計。 – Smandoli 2012-07-10 20:58:37