我希望你能帮我解决问题并在循环中显示结果。
我偶然发现了几个类似的问题,例如this one,尽管我的问题有点回答,但也不是。
我有以下查询:
(SELECT dt_id, DATE_FORMAT(dt_date, '%m-%d-%Y') as dt_date,
dt_data, dt_bodypart, dt_wktype, dt_wkurl, dt_year,
COUNT(*) as Total
FROM data
WHERE dt_year = '2015'
and dt_username_member = 'admin'
GROUP BY dt_date
ORDER BY dt_date DESC
LIMIT 0,100)
ORDER BY dt_date ASC
按日期显示行并按日期对其进行分组,因为如果同一日期出现两次,我处理结果的数组在日历中不能显示多于1个结果。我还计算每个日期的记录数。
我实际上可以通过在while循环中运行查询来使其工作(这是不好的做法)但我想避免这种情况并以更有效和更好的方式执行
无法使用此结果,因为我的数组只会在日历页面上显示一个结果(最近一个添加到数据库中):
array {
'08-26-2015' : 'something',
'08-26-2015' : 'something else',
'08-27-2015' : 'else',
}
目前我有这个但是我在while循环中运行查询,如果该日期的记录数是> 1,我想实现这个相同的结果,但没有运行查询计数>的记录一个while循环内部
array {
'08-26-2015' : 'something, something else',
'08-27-2015' : 'else',
}
答案 0 :(得分:0)
经过一番挖掘,我找到了解决方案。我提出了将检索所有结果的查询,而不需要在while循环内运行查询以获取每天的所有信息。这是查询:
(SELECT DATE_FORMAT(dt_date, '%m-%d-%Y') dt_date,
count(dt_date) as date_count,
GROUP_CONCAT(dt_data ORDER by dt_date SEPARATOR '>>') dt_data,
GROUP_CONCAT(dt_bodypart ORDER by dt_date SEPARATOR '>>') dt_bodypart,
GROUP_CONCAT(dt_wktype ORDER by dt_date SEPARATOR '>>') dt_wktype,
GROUP_CONCAT(dt_wkurl ORDER by dt_date SEPARATOR '>>') dt_wkurl
FROM data
WHERE dt_username_member = 'admin' and dt_year = '2015'
GROUP BY dt_date ORDER BY dt_date ASC) ORDER BY dt_date ASC
此查询会将所有信息分组到与特定日期匹配的行中,如下所示:
dt_date | dt_data |
------------------------------------------
2015-09-03 | something>>something else |
所以你需要做的就是爆炸dt_data和你了。