我有一个其中有价格请求的MySQL表,它具有日期,第一,最后和product_id字段。可以从product_id的产品表中找到产品品牌。
给定日期范围,他们想知道日期范围内每天的请求总数,人员和品牌,以及日期范围的总数。这是一个棘手的部分,如果同一个人一天发出一个以上的请求,那么对于一个人来说,该请求仅计为1。但是,如果某人在1天内提出2个不同品牌的请求,则每个品牌在当天获得1个。但是如果他们在一天内要求多个品牌,则该品牌在该天只被计为1。
例如,假设在某个特定日期,John Doe提出了3个价格要求,分别是Burberry产品和2施华洛世奇产品。对于人来说,这仅占1,对于Burberry,对于施华洛世奇,则仅占1。但是,如果另一个人请求burberry,则当天有2个burberry,当天有2个人。
希望自此以后。无论如何,最好的方法是什么?我正在使用PHP4和MySQL4
谢谢!
最佳答案
假设机器的表定义是,尝试
-- # Shows number of people doing a request per day
SELECT
Count(DISTINCT userId) AS NumberOfUsers,
FROM
priceRequestsProducts prp,
date
GROUP BY
prp.date;
-- # Shows number of request for a given product per day
SELECT
Count(DISTINCT userId) AS NumberofUsers,
productId,
date
FROM
priceRequestsProducts prp
GROUP BY
prp.date, prp.productId;
不希望在查询中使用。对于人们,您希望每天排成一行,对于产品,您希望每对排成一行(产品,每天)。如果您确实想这样做,请引入一个不用作productId的值(我将productId设为UNSIGNED INT NOT NULL AUTO_INCREMENT)或使用NULL,然后使用它来指定用户:
SELECT
Count(DISTINCT userId) AS NumberOfUsers,
FROM
priceRequestsProducts prp,
NULL,
date
GROUP BY
prp.date;
UNION ALL
SELECT
Count(DISTINCT userId) AS NumberofUsers,
productId,
date
FROM
priceRequestsProducts prp
GROUP BY
prp.date, prp.productId;
关于php - PHP:跟踪用户和产品品牌的请求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/936103/