gpt4 book ai didi

mysql - 如果不返回最低值

转载 作者:可可西里 更新时间:2023-11-01 07:40:05 25 4
gpt4 key购买 nike

目标

不返回其市场暂停的最低价格。

问题

我不知道语法。

场景

有以下存储过程可以获取特定产品的最低最高价格:

BEGIN
Select Min(Case When product.PromotionalPrice = 0
Then product.OriginalPrice Else
Least(product.PromotionalPrice, product.OriginalPrice)
End) As minProductPrice,
Max(Case When product.PromotionalPrice = 0
Then product.OriginalPrice Else
Least(product.PromotionalPrice, product.OriginalPrice)
End) As maxProductPrice
From products As product
Where product.Name = 'Playstation 3';
END

上下文是:有市场产品。产品属于市场。如果某个市场暂停,则不显示其产品,也不将其添加到最高/最低价格比较。

你们都看得懂吗? 我想从上述查询的 MinMax 语句中排除其市场暂停的产品。

表格

这是市场表:

+----+------+-------------+
| Id | Name | SituationId |
+----+------+-------------+
| 1 | A | 1 |
+----+------+-------------+
| 2 | B | 2 |
+----+------+-------------+
| 3 | C | 3 |
+----+------+-------------+

这是markets_situations 表:

+----+-----------+
| Id | Name |
+----+-----------+
| 1 | Neutral |
+----+-----------+
| 2 | Premium |
+----+-----------+
| 3 | Suspended |
+----+-----------+

最后,这是 products 表:

+----+---------------+--------+------------------+---------------+
| Id | Name | Market | PromotionalPrice | OriginalPrice |
+----+---------------+--------+------------------+---------------+
| 1 | Xbox 360 | 1 | 0 | 225,00 |
+----+---------------+--------+------------------+---------------+
| 2 | Xbox 360 | 2 | 99,00 | 175,00 |
+----+---------------+--------+------------------+---------------+
| 3 | Xbox 360 | 3 | 0 | 135,00 |
+----+---------------+--------+------------------+---------------+
| 4 | Playstation 3 | 1 | 0 | 189,00 |
+----+---------------+--------+------------------+---------------+
| 5 | Playstation 3 | 2 | 125,00 | 165,00 |
+----+---------------+--------+------------------+---------------+
| 6 | Playstation 3 | 3 | 110,00 | 185,00 |
+----+---------------+--------+------------------+---------------+

加强理解

我不想将 110,00 显示为存储过程结果的 Min 价格,因为它的市场 (C) 是已暂停

我已经做了什么

我已经尝试了以下方法,但没有成功:

BEGIN
[...]

Where product.Name = 'Playstation 3'
And marketSituation.Id <> 3;
END

会发生什么? And 条件什么都不做。查询不断返回暂停市场的价格。

最佳答案

Select Min(Case When product.PromotionalPrice = 0
Then product.OriginalPrice Else
Least(product.PromotionalPrice, product.OriginalPrice)
End) As minProductPrice,
Max(Case When product.PromotionalPrice = 0
Then product.OriginalPrice Else
Least(product.PromotionalPrice, product.OriginalPrice)
End) As maxProductPrice
From products As product
Inner join markets on product.market = markets.id AND markets.SituationId <> 3
Where product.Name = 'Playstation 3';

关于mysql - 如果不返回最低值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com