我有两个表,products和products_description
产品:
Product_ID Product_Price
1 10
2 20
3 10
4 20
5 10
6 20
7 10
8 10
9 10
10 10
产品_说明:
Product_ID Product_Name
1 Pants - Black
2 Pants - Black
3 Pants - White
4 Pants - White
5 Pants - Red
6 Pants - Red
7 Hat
8 Socks
9 Scarf
10 Bird
基本上,我需要针对购物车中已经存在的当前代码实现代码。
实现需要使用GROUP BY products_name-但要提供最便宜的一种。
到目前为止,我有以下几点:
SELECT p.products_id, p.products_price, pd.products_name
FROM products p
// BOF自定义子查询
join
(
SELECT pp.products_id, pp.products_name, min(pr.products_price) as min_price
from products_description pp
inner JOIN products pr
ON pp.products_id = pr.products_id
group by pp.products_name
)
AS subq on p.products_id = subq.products_id and p.products_price = subq.min_price
// eof自定义子查询
LEFT JOIN products_description pd on p.products_id = pd.products_id
所需的输出:
Product_ID Product_Name Product_Price
1 Pants - Black 10
3 Pants - White 10
5 Pants - Red 10
7 Hat 10
8 Socks 10
9 Scarf 10
10 Bird 10
但是正在发生的事情是裤子正在被移走。仅剩下产品7-10。
任何想法有人吗?
最佳答案
您似乎想要每个产品名称最便宜的产品。该查询有点复杂,因为价格和名称信息是分开的。编写查询的一种方式是:
select p.Product_ID, ppd.Product_Name, p.price
from product_description pd join
products p
on pd.product_id = p.product_id join
(select pd2.Product_name, min(p2.price) as minprice
from product_description pd2 join
products p2
on pd2.product_id = p2.product_id
group by pd2.Product_name
) ppd
on ppd.Product_Name = pd.Product_Name and
ppd.minprice = p.price;
关于mysql - MySQL两表的最小值和分组依据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30585321/