Интересно, возможно ли укоротить запрос в зависимости от некоторого значения переменной элегантным способом.mysql - if value = 0 shorten where statement
Например: у меня есть значение имени $var = 0
, и я хотел бы отправить запрос, который выглядит следующим образом:
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100";
Но Whan в $ вар = 1 Я хотел бы отправить запрос, как это :
$query = "SELECT id, name, quantity FROM products WHERE quantity > 100 AND id = '$var'";
Так что в зависимости от значения $ var я хочу выполнить один из запросов. Они отличаются только последним выражением. Я нашел два возможных решения, но они не изящны, и мне они вообще не нравятся.
Один сделано в PHP:
if ($var == 0) {
$query_without_second_expression
} else {
$query_with_second_expression
}
Второй выполнена в MySQL:
SELECT WHEN '$var' <> 0 THEN id, name, quantity
FROM products WHERE quantity > 100 AND id = '$var' ELSE id, name, quantity
FROM products WHERE quantity > 100 END
, но я не люблю его - каждая идея удваивает запросы в некоторой whay. Могу ли я сделать что-то вроде этого?
SELECT id, name, quantity
FROM products WHERE quantity > 100
CASE WHEN $var <> 0 THEN AND id = '$var'
Это намного короче и при необходимости добавляет часть запроса. Конечно, реальный запрос намного сложнее, и более короткое утверждение будет действительно ожидаемым. У кого-то есть идея?
Я работал над этим, но, пожалуйста, удалите часть 'AND id = $ var' из исходного' $ query' –
woops .. некоторые копии вставки ошибок .. done –
Ницца, я уже поддержал ваш ответ. –