我有一个其中有价格请求的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/

10-12 05:18