我需要对此查询提供一些帮助,到目前为止我有这个:
SELECT * FROM coupons WHERE discount_id = '1' AND client_username = 'Zara' GROUP BY winner_id
表格就像这样
id client_username winner_id bdate discount_id destroyed
72 zara 1125405534 2012-11-11 03:34:49 4 0
71 zara 1125405534 2012-11-11 03:34:43 1 0
70 zara 1125405534 2012-11-11 03:34:27 1 0
我想按winner_id
(一个唯一的用户ID)对结果进行分组,其中discount_id
等于某个值,按bdate
排序,我认为我需要{{} 1}} id
和bdate
用户每次发生的值,并计算winner_id出现的次数,因此结果需要是一个值(winner_id出现次数的计数),以及3个数组(discount_id,destroy,id)..但我不知道如何以我需要的方式重新启动它。谢谢你的帮助!
答案 0 :(得分:0)
两种基本方法:
数字1涉及在查询中使用一些聚合函数,如COUNT()和GROUP_CONCAT():
SELECT count(*) as num_wins, GROUP_CONCAT(discount_id, ',') as discount_ids ...
然后在PHP中,这些GROUP_CONCAT列可以“循环”到数组中,同时循环结果:
foreach($rows as $row) {
$discount_ids = explode(',', $row['discount_ids']);
// ...
}
数字2更容易SQL,但更丑陋的PHP。基本上只需选择所有行,然后自己预处理结果。 (我推荐以前的解决方案)
foreach($rows as $row) {
$results_tree[$row['winner_id']]['num_wins']++;
$results_tree[$row['winner_id']]['discount_ids'][] = $row['discount_id'];
// ...
}