0

假设我有一个带有字段和行的表 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

那么我将如何选择说,所有水果都是苹果,价格在 1 美元 + .10% 以内,或多或少($.90 >= food_price <= $1.10)。

所以这个查询会返回红苹果和绿苹果,因为它们是水果,也是苹果,而且它们的价格在 0.90 美元和 1.10 美元之间。

在给定的示例中,我知道价格,但是,如果我不知道水果的价格怎么办?

我的查询:

$sql = "SELECT * FROM Food_table WHERE 
food_type = 'Fruit' AND food_name LIKE '%apple%'  "

但是,我错过了价格条款。

谢谢你们/姑娘们

进一步说明:如果我有一个 2 选择框,用户在其中选择 food_type、food_name 并输入价格,我该如何退回价格多或少 10% 的食物?

4

4 回答 4

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

选择你更喜欢的,我个人觉得第一个版本更具可读性。

于 2013-10-23T16:13:50.103 回答
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));
于 2013-10-23T16:21:36.860 回答
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)
于 2013-10-23T16:22:17.160 回答
0

你可以这样尝试:

SELECT * FROM Food_table WHERE food_type = 'Fruit' AND food_name LIKE '%apple%' AND food_price >= 0.90 AND food_price <= 1.10
于 2013-10-23T16:15:35.183 回答