我正在尝试为产品建立一些折扣清单。我有一个包含条件的主表:
<div class="container">
<div class="rotate">
<div class="text">we are on a
<div class="fit-text">mission</div>
</div>
</div>
<div class="rotate">
<div class="text">we are on a<br/>mission</div>
</div>
</div>
我要执行的查询是这样的:
ID Connection Class Discount
1 (B OR F) 150 0.1
2 B (600 OR 900) 0.2
3 F (1500 OR 2500) 0.3
4 (C OR F) 4500 0.25
以上示例应返回第2行。该如何完成?我是否需要以其他方式格式化我的条件?我已经尝试过此示例,但无法获得所需的结果。想法是建立多列约束,并根据选择的配置,将范围缩小到适用的正确折扣。
请告诉我是否有解决此问题的简便方法。
谢谢!
答案 0 :(得分:1)
正如@Minty在评论中所说-您的数据未规范化。如果要拆分Connection
和Class
,以便它们仅包含一个值,则可以轻松地将数据拉回。
| ID | Connection | Class | Discount |
|----|------------|-------|----------|
| 1 | B | 150 | 0.1 |
| 1 | F | 150 | 0.1 |
| 2 | B | 600 | 0.2 |
| 2 | B | 900 | 0.2 |
| 3 | F | 1500 | 0.3 |
| 3 | F | 2500 | 0.3 |
| 4 | C | 4500 | 0.25 |
| 4 | F | 4500 | 0.25 |
此SQL将返回0.2:
SELECT Discount
FROM Constraints
WHERE Class = 600
我希望您必须引入Connection
,因为类本身会带回重复的记录(除非您根据示例数据按Discount
进行分组)。
所以:
SELECT Discount
FROM Table2
WHERE Connection = 'B' AND Class = 600
或
SELECT Discount
FROM Table2
WHERE Class = 150
GROUP BY Discount
编辑:< ID, Connection, Class >
可以组成表中的复合Primary Key
。
答案 1 :(得分:0)
“类”列是什么数据类型。如果是数字,请尝试以下查询:
SELECT Constraints.Discount
FROM Constraints
WHERE [Class] = 600
'600'
是一个包含3个字符6
,0
和0
的字符串常量,这与数值600不同。