为更正答案而编辑:
http://sqlfiddle.com/#!2/ae665/4
SELECt date_format(datefield,'%Y-%m-%d') AS DATE, IFNULL(counts, 0), item_id FROM dates aLEFT JOIN (SELECt COUNT(*) as counts, purchase_date,user_id,item_id FROM items_purchased WHERe item_id=1 GROUP BY date(purchase_date),item_id )r ON date(a.datefield) = date(r.purchase_date) ;
以上查询基于以下假设:
- 表格日期包含要列出的日期范围内的连续日期。
- 不太确定项目表的用途。第二个查询是按item_purchased表的purchase_date和item_id分组。
- 计数是对特定日期购买的特定商品进行计数(与user_id无关)。
@timpeterson(OP)进行的更新非常感谢@Sel。 这是sqlfiddles,展示了我感兴趣的两个查询:
- 单个用户拥有的所有商品(例如
user_id=11
)的每日购买量:http://sqlfiddle.com/#!2 / 76c00 / 3 - 每天
item_id=1
拥有的购买次数user_id=11
:http: //sqlfiddle.com/#!2 / 76c00 / 1
这是第二个链接的SQL代码,以防链接以某种方式损坏:
SELECt date_format(datefield,'%Y-%m-%d') AS DATE, IFNULL(countItem, 0), item_idFROM dates aLEFT JOIN (SELECt countItem, purchase_date,i.user_id,p.item_id FROM ( SELECt count(*) as countItem, purchase_date,user_id,item_id FROM items_purchased GROUP BY date(purchase_date),item_id ) p inner join items i on i.item_id=p.item_id WHERe p.item_id='1' and i.user_id='11' //just get rid of "p.item_id='1'" to produce the 1st query result)r ON date(a.datefield) = date(r.purchase_date);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)