MySql需要查询检查一个条件,然后在返回结果之前检查第二个条件

时间:2013-10-23 16:11:05

标签: php mysql

假设我有一个表,包含字段和行的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%或更低的价格退回食物?

4 个答案:

答案 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)