0
您好我寫了這個查詢MySQL查詢修改
SELECT cl_brands.name AS Brand,DATE_FORMAT(cl_doctor_call.date_entered,'%b%y')AS MonthYear,
SUM(FIND_IN_SET(CONCAT('^',cl_brands.id,'^'),cl_doctor_call_cstm.brand_discussed_c))AS No_Times_Brand_Discussed
FROM cl_doctor_call LEFT JOIN cl_doctor_call_cstm ON
cl_doctor_call.id=cl_doctor_call_cstm.id_c
LEFT JOIN cl_brands ON
CONCAT('^',cl_brands.id,'^') LIKE CONCAT(cl_doctor_call_cstm.brand_discussed_c, '%')
WHERE (cl_doctor_call.date_entered)
BETWEEN CURDATE()-INTERVAL 3 MONTH AND CURDATE()
GROUP BY cl_brands.name,MonthYear
ORDER BY No_Times_Brand_Discussed DESC limit 1
該查詢爲我們提供了與品牌名稱和monthyear討論最高的品牌。
如:
Brand Monthyear No_Times_Brand_Discussed
x Nov11 5
現在我想展示品牌討論的'同一品牌的'細節過去2個月(這意味着我的查詢應返回結果所有同品牌的詳細信息的詳細過去2個月) 所以我的結果會是這樣的。
Brand Monthyear No_Times_Brand_Discussed
x Nov11 5
x Oct11 0
x Sep11 1
告訴我如何修改我的上述查詢,以便它能給我這個結果。
是你的查詢邏輯是正確的,但我現在得到錯誤的結果。如果我們只執行where子句,我們可以得到關於哪個品牌被討論最高次數的細節。但最終的結果與這個結果相沖突......爲什麼如此呢? – Java 2012-01-31 13:35:28
您能否舉一個兩個結果如何不同的例子? – Jody 2012-01-31 20:01:20
where子句將返回所有正在討論的brands_id,這是正確的,但可能因爲錯誤的group by子句我們得不到確切的結果。 (因爲我知道,通過查看數據庫記錄,討論哪個品牌的次數最多) – Java 2012-02-01 07:57:31