MySQL - условный запрос, результат по заявлению - PullRequest
0 голосов
/ 16 января 2011

Я хочу построить запрос следующим образом:

ВЫБРАТЬ * ОТ t1 ГДЕ видимый = 'да' И ЕСЛИ (продажа = 'да', количество> 0)

Это мойЦель состоит в том, чтобы получать только строки из таблицы с количеством больше 0, только когда это продукт «продажи».Я пробовал операторы IF и CASE, но, похоже, результат может быть только строкой целых чисел, а не оператором.

Я застрял здесь ...

Ответы [ 3 ]

2 голосов
/ 16 января 2011

Если вы читаете его оригинальный текст «получите только строки из таблицы с количеством больше 0 ТОЛЬКО, когда это продукт« продажи »»

Поскольку вопрос несколько плохо сформулирован.Предположение следующее:

Возвращать ТОЛЬКО элементы, где SALE = 'yes' и QUANTITY> 0 и VISIBLE = 'yes'.

Если это то, что хочет пользователь, SQL для этого просто:

SELECT * FROM t1 WHERE sale='yes' AND quantity > 0 AND visible='yes'

Кстати, если ваша БД будет содержать много данных, использование логических значений (true / false) вместо varchars намного эффективнее в движке и сэкономит время на выборках и вставках.

1 голос
/ 16 января 2011

Вам не хватает 3-го параметра в функции IF

SELECT *
FROM t1
WHERE visible='yes'
    AND IF (sale = 'yes', quantity > 0, 1) 

является действительным SQL

1 голос
/ 16 января 2011
SELECT * FROM t1 WHERE visible='yes' AND ((sale = 'yes' AND quantity > 0) OR sale != 'yes')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...