我正在做一个学校项目的想法是一个销售啤酒的电子商务网站。
我需要得到的前三名最订购的产品,为每一个用户,已订购的东西。我的数据库包括4个表:用户、产品、订单和订单详情。示意图为:
我想我必须加入所有的4个表才能得到这些信息,但是我不知道正确的方法。以下是我生成的内容:
SELECT u.username, p.`id` AS productId, p.`name`, od.`quantity` AS quantity
FROM `order_detail` AS od
INNER JOIN `products` AS p
INNER JOIN `users` AS u
ON od.`product_id` = p.`id`
GROUP BY od.`order_id`, p.name
ORDER BY od.`quantity` DESC, p.`name` ASC
数据库脚本:https://pastebin.com/bvqlgqur
1条答案
按热度按时间iyr7buue1#
为了限制返回的行只显示每个用户订购的前3个产品,您需要在order\u详细信息上使用带有limit子句的子查询。
除此之外,它只是4个表之间的简单连接。