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