2013-10-23 73 views
0

假設我有一個表,Food_table與領域和行:MySql的極品查詢,檢查一個條件比檢查第二個條件返回結果

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%' " 

不過,我失蹤的價格條款。

謝謝你們/加侖

進一步解釋: 如果我有在用戶選擇的food_type,food_name並進入價格2選擇框,我怎麼能返回食物的價格增加10%是或更少?

+1

是否有任何理由,你不能添加「價格介於0.90和1.10」? –

+0

檢查我回答的PHP代碼。 – Minoru

+0

謝謝你們! – user2569019

回答

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)); 
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 

選擇你喜歡更多的人吧,我個人覺得第一個版本更具可讀性。

+0

感謝您的回答,但在上面給出的例子中,我知道價格,如果我不知道價格怎麼辦? – user2569019

+0

對不起,您能舉個例子嗎? –

0

你可以嘗試這樣的說法:

SELECT * FROM Food_table WHERE food_type = 'Fruit' AND food_name LIKE '%apple%' AND food_price >= 0.90 AND food_price <= 1.10 
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)