我有这个问题
我有2张桌子
1. product_detail
-id
-name
-thumb
2. product_sale
-id
-pid
-fid
-price
-package
SELECT *
FROM product_sale
WHERE MIN(product_sale.price)
JOIN product_detail
ON product_detail.id = product_sale.pid
ORIGINAL SELECT SORRY发布错误
SELECT * FROM product_detail INNER JOIN product_sale ON product_detail.id = pid
我在product_detail示例Product1中有1个产品 我在Product_sale中为Product1设置了许多行,但是product_sale.fid和product_sale.price
不同我需要做的是在product_sale
中选择一个显示Product1 With Lovest Price的选项1 Product1 1.50 1pz
2 Product2 2.50 3pz
3 Product3 3.00 1pz
现在我得到了
1 Product1 1.50 1pz
2 Product1 1.65 1pz
3 Product1 1.70 1pz
4 Product3 3.00 1pz
请帮助我选择我需要做什么?谢谢大家
答案 0 :(得分:1)
禁止子查询,你不能在WHERE之后加入,我很确定你也不能在WHERE中使用MIN。但是,您可以在WHERE包含MIN的子查询。
SELECT *
FROM product_sale AS ps INNER JOIN product_detail AS pd ON ps.pid = pd.id
WHERE (ps.pid, ps.price) IN (
SELECT pid, MIN(price)
FROM product_sale
GROUP BY pid
);
请注意,如果产品以最低价格多次出售,您将获得多行。我不清楚#pz值应该是什么,但我的答案中的*
可能是pd.id, pd.name, COUNT(1) AS pz
而GROUP BY pd.id, pd.name
放在;
编辑:以下内容应该在下面的评论中得到“最后一次销售”这个答案。
SELECT *
FROM product_sale AS ps3
INNER JOIN product_detail AS pd ON ps3.pid = pd.id
WHERE ps3.fid IN (
SELECT MAX(ps2.fid) AS lastFidsForPidsAtLowestPrices
FROM product_sale AS ps2
WHERE (ps2.pid, ps2.price) IN (
SELECT ps1.pid, ps1.MIN(price) AS lowestPriceForPid
FROM product_sale AS ps1
GROUP BY ps1.pid
)
GROUP BY ps2.pid
)
;
答案 1 :(得分:0)
似乎是一个小组和一个小组的直接联接..
SELECT PD.name, min(price) as LowestSoldPrice, PD.Thumb, PS.Package
FROM product_Detail PD
LEFT JOIN product_Sale PS
on PD.ID = PS.PID
GROUP BY PD.name, PD.Thumb, PS.Package
答案 2 :(得分:0)
我根本不理解你的查询。我很惊讶它产生了任何错误。这就是我要做的。
select pd.id productid,
min(pd.name) name, -- min just so I do not have a complex group by
min(ps.price) minprice
from product_detail pd
join product_sale ps
on pd.id=ps.pid
group by pd.id
这将为每个产品ID提供一行,其中包含产品名称和最低价格。
答案 3 :(得分:0)
SELECT ps.*, pd.*
FROM product_sale ps
LEFT JOIN product_sale t
ON ps.pid = t.pid AND ps.price>t.price
LEFT JOIN product_detail pd
ON pd.id = product_sale.pid
WHERE t.pid IS NULL
但是在这里很多人我想知道你是否真的需要GROUP BY
。如果您有2个或更多具有相同最低价格的销售,那么接受的行为是什么?是否应归还所有记录?还是只有一个?哪一个呢?