我对 sql 相当陌生,所以我很抱歉,如果这是一个菜鸟问题,但我已经绞尽脑汁一段时间了,在谷歌上搜索没有答案,所以这是我最后的手段。
我一直在尝试在我的个人网站上创建一个最畅销的页面,该页面销售过去 30 天最畅销的商品。
数据库中有两个表:产品和产品订单
产品的所有时间的总销量、所有时间的评论数等相关信息,但产品订单上有产品销售日期。
所以我认为产品唯一有用的是标题、图片和价格。
现在我查看产品订单,其中包含产品 ID 和销售日期。
所以我的问题是如何对 id 进行分组,
例如,如果我有:
productid = 42, datesold = 2013-11-08 21:11:10
productid = 11, datesold = 2013-11-08 21:09:10
productid = 42, datesold = 2013-11-08 21:06:10
productid = 2, datesold = 2013-11-07 21:11:10
productid = 11, datesold = 2013-11-06 21:11:10
我如何返回它,所以它基本上说
productid = 42 (sold 2 times)
productid = 11 (sold 2 times)
productid = 2 (sold 1 time)
这样的事还能做吗?
此外,我认为我有显示它的左连接,但仍然无法获取组计数的逻辑
这是我的左连接逻辑,请记住它将是 pdo,这只是在我准备语句之前显示查询;)
$todaysdate = date('Y-m-d h:i:s', strtotime("现在 - 30 天前"));
SELECT * FROM product_order LEFT JOIN product ON product_order.productId=product.id
WHERE product_order.modifiedDate >= $todaysdate AND product_order.status = 2
ORDER BY product_order.modifiedDate DESC;
预先感谢您提供的任何帮助:)
编辑:::::::::::::::::::::::::::::::::::::
我已经更改了它,但由于某种原因它抛出了一个重大错误:
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 4 行的 '15:14:13 AND Product_order.status = 2 AND Product.status = 1 GROUP BY Product_o' 附近使用的正确语法 堆栈跟踪:
这是sql查询:
$todaysdate = date('Y-m-d G:i:s', strtotime("now - 30 days ago"));
SELECT product.id, product.name, product.picture, product.mainImage, product_option_detail.price, COUNT(product_order.productId) AS NumberOfOrders FROM product_order
RIGHT JOIN product ON product_order.productId=product.id
INNER JOIN product_option_detail ON product_order.productId=product_option_detail.productId
WHERE product_order.modifiedDate >= {$createddate} AND product_order.status = 2 AND product.status = 1
GROUP BY product_order.productId
ORDER BY NumberOfOrders DESC;
最佳答案
使用 GROUP BY
按产品 ID 和名称对行进行分组,并使用 count
聚合来计算每个产品的订单数。
SELECT p.id, p.name, count(po.order_id)
FROM product_order as po
LEFT JOIN product as p ON po.productId = p.id
WHERE po.modifiedDate >= $todaysdate AND po.status = 2
GROUP BY p.id,p.name
ORDER BY po.modifiedDate DESC;
有关分组依据 http://www.w3schools.com/sql/sql_groupby.asp 的更多信息
关于php - sql中的组计数产品ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887997/