【发布时间】:2013-06-10 16:59:37
【问题描述】:
我想计算每件商品的购买次数,同时根据查看内容的人,显示用户是否购买了内容。因为项目和购买的数量可能会变得很大,所以我不愿意投入更多的 JOINs 来实现这一点,因为那样看起来效果不佳。
基本上,我希望在以下查询中的某处有一个did_i_buy 字段,而不添加另一个JOIN。这可能吗?假设user_name=tom:
SELECT Items.item_id, item_name, COUNT(purchase_status='bought') as number_bought
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
GROUP BY Items.item_id
这是我的数据库结构:
Table Items
item_id item_name
1 item_1
2 item_2
3 item_3
Table Purchases
item_id purchase_status user_name
1 bought joe
2 bought joe
1 bought tom
1 bought bill
tom 的期望结果
item_id item_name number_bought did_i_buy
1 item_1 3 yes
2 item_2 1 no
【问题讨论】:
-
为什么不将“times_purchased”反规范化并为用户的购买状态做一次连接?
-
@landons,谢谢,我对 MYSQL 不是很有经验,因此我不确定你的意思。你能用一些代码解释一下吗?
-
你不需要从 MySql 获取 did_i_buy。这是对资源的浪费。只需检查您的 PHP(或其他语言)代码中的 count > 0。