假设我有一个表,包含字段和行的Food_table:
food_type | food_name | food_price
Meat | steak | 7.00
Fruit | red_apple | 1.00
Fruit | green_apple | 1.10
Fruit | yellow_apple | 0.50
... etc
那么我该如何选择说,所有水果都是苹果,价格在一美元+ .10%之内,或多或少($ .90> = food_price< = $ 1.10)。
所以这个查询将返回红苹果和青苹果,因为它们是水果,也是苹果,它们的价格在$ .90和$ 1.10之内。
在给出的例子中,我知道价格,但是,如果我不知道水果的价格怎么办?
我的查询:
$sql = "SELECT * FROM Food_table WHERE
food_type = 'Fruit' AND food_name LIKE '%apple%' "
但是,我错过了价格条款。
谢谢你们/ gals
进一步说明: 如果我有一个2选择框,用户选择food_type,food_name并输入价格,我该如何以10%或更低的价格退回食物?
答案 0 :(得分:1)
尝试此查询:
SELECT *
FROM Food_table
WHERE food_type = 'Fruit'
AND food_name LIKE '%apple%'
AND price BETWEEN 0.90 AND 1.10
我只是在WHERE
子句中添加了您询问的条件;我没有测试集但它应该可以工作。
最后一个条件也可以写成
AND food_price >= 0.90 AND food_price <= 1.10
选择您更喜欢的那个,我个人觉得第一个版本更具可读性。
答案 1 :(得分:0)
你可以这样试试:
SELECT * FROM Food_table WHERE food_type = 'Fruit' AND food_name LIKE '%apple%' AND food_price >= 0.90 AND food_price <= 1.10
答案 2 :(得分:0)
如果您想参数化百分比,可以尝试:
SELECT *
FROM Food_table
WHERE food_type = 'Fruit'
AND food_name LIKE '%apple%'
AND price BETWEEN
(0.90*(SELECT price FROM Food_table WHERE food_name = 'some_food'))
AND (1.10*(SELECT price FROM Food_table WHERE food_name = 'some_food'));
编辑:对于PHP:
mysqli_query("SELECT *
FROM Food_table
WHERE food_type = '" . $food_type . "'
AND food_name LIKE '" . $food_name . "'
AND price BETWEEN " . ($price*0,9) . " AND " . ($price*1,1));
答案 3 :(得分:0)
如果您不知道价格且价格是X,并且百分比范围的十进制表示(即0.1)是Y,您可以使用简单的数学运算并按照以下方式执行:
SELECT *
FROM Food_table
WHERE food_type = 'Fruit'
AND food_name LIKE '%apple%'
AND price BETWEEN X - (X * Y) AND X + (X * Y)