我有一个stock表,它包含产品id、公司id、大小id和价格的外键。我需要取得总公司,产品名称(升序),价格和数量(最低价格只)-为每一个产品。
我试过了,
SELECT pr.product_name,
COUNT(DISTINCT stock.company_id) AS total_companies,
sz.size_name,
stock.price
FROM stock
JOIN product pr ON pr.id = stock.product_id
JOIN size sz ON sz.id = stock.size_id
GROUP BY stock.product_id
ORDER BY pr.product_name ASC;
到目前为止,每种产品的尺寸和价格都是随机的。如果我在selectquery中输入min(stock.price),那么price是正确的,但是关联的大小是错误的。如果我将条件设置为只选择价格最低的产品,那么公司计数将减少到1。
任何帮助或指点都非常感谢。
2条答案
按热度按时间wr98u20j1#
在v8之前的mysql中,这有点棘手。一种方法是使用
group_concat()
/substring_index()
技巧:笔记:
这假设大小不包含逗号。
如果大小中有逗号,则可以使用另一个分隔符轻松处理。
GROUP_CONCAT()
默认情况下限制为1024字节。如果这不够大,那么可以将缓冲区变大。rbpvctlc2#
基于op的注解,使用嵌套查询: