gpt4 book ai didi

mysql - 查询以计算一张表中的行数和更具体的行数

转载 作者:行者123 更新时间:2023-11-29 12:29:15 28 4
gpt4 key购买 nike

我正在尝试编写一个查询,返回用户购买产品的次数以及该产品被购买的次数。

我正在搜索的表有列

log_id (int)
log_product (int)
log_date (datetime)
log_user (int)

今天,我使用此代码

SELECT product_id
, product_name
, brand_name
, COUNT(log_user) nbuys
FROM Products p
JOIN Brands b
ON p.product_id = b.brands_id
LEFT
JOIN log l
ON l.log_product = p.product_id
GROUP
BY p.product_id

返回结果是这样的:

| product_id | product_name | brand_name | nbuys |

其中 nbuys 是所有用户购买该产品的次数。我想要的是一种重写该查询的方法,以便它返回如下内容:

| product_id | product_name | brand_name | nbuys | n_userbuys |

其中新列“n_userbuys”是查看该页面的用户购买该页面的次数。因此,user_id 信息将被放置在查询中。最终结果是一个可以看到所有产品的列表。

我希望这一点很清楚。

<小时/>

我将“产品”和“品牌”表的结构添加到问题中。

产品

| product_id (int) | product_name (varchar) |  product_brand (int) |

品牌

| brand_id (int) | brand_name (varchar) |
<小时/>

我想我并不清楚我在寻找什么。表 log 只是将其他表中的一些键放在一起。我试图编写的查询应该创建一个列表。在该列表中,所有产品都应出现。每行必须显示产品的购买次数。这是通过 COUNT(log_user) ... GROUP BY p.product_id 很好地完成的。缺少的部分是每行还必须显示给定用户购买的次数。

这意味着,如果 user_id=7 的用户正在查看该页面,则通过查询生成的列表应显示如下内容:

| product_id | product_name | brand_name | nbuys | n_userbuys |
| 1 | pencil | Faber | 120 | 12 |
| 2 | pen | Bic | 531 | 34 |
| 3 | rubber | Faber | 60 | 4 |

但是,如果 user_id=8 的另一个用户正在查看该页面,则列表应保留 nbuys 列上的值,但将 n_userbuys 列上的值更改为 user_id=8 购买它们的次数:

| product_id | product_name | brand_name | nbuys | n_userbuys |
| 1 | pencil | Faber | 120 | 1 |
| 2 | pen | Bic | 531 | 23 |
| 3 | rubber | Faber | 60 | 1 |

代码在 php 上运行,因此我可以在需要的地方将用户 ID 添加到查询中。

提前致谢!

最佳答案

我几乎找到了我的问题的答案:

SELECT product_id, product_name, brand_name, COUNT(log_user) AS nlog, 
COUNT(CASE WHEN log_user='$user_id' THEN 1 END) as ulog FROM Products
INNER JOIN Brands ON Products.product_brand=Brands.brand_id
LEFT JOIN log on log.log_product = Product.product_id
GROUP BY product_id,product_name, Brands_name

使用 COUNT(CASE WHEN log_user='$user_id' THEN 1 END) 允许我计算符合该特定条件的行存在的次数。但是,代码会根据每个用户购买商品的次数来重复这些行。

<小时/>

已解决。修复方法是仅按 Product_id 进行分组。谢谢大家。

关于mysql - 查询以计算一张表中的行数和更具体的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841424/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com