Использование другого запроса внутри функции IFNULL () - PullRequest
0 голосов
/ 25 мая 2019

Мне нужна помощь с запросом SQL. У меня есть таблица payment_plan со столбцами payment_method, validto и validfrom. payment_method может быть чем-то вроде «CC» или «CASH»; однако это также может быть '*' для всех типов.

Я пытаюсь выбрать планы, которые в данный момент активны и соответствуют только определенному способу оплаты.

Однако, если для этого payment_method нет записей, он проверит наличие записи с '*' в качестве payment_method. Я попытался использовать оператор IFNULL, чтобы проверить, равен ли payment_method «*», если нет записей с payment_method, равным «CC», но я получаю сообщение об ошибке.

Так кто-нибудь знает лучший способ сделать это? Вот SQLFiddle с тем, что я пробовал:

http://sqlfiddle.com/#!9/294845/3

Спасибо!

1 Ответ

1 голос
/ 25 мая 2019

Я не понимаю, почему вы бы использовали ifnull().Делает ли это то, что вам нужно?

SELECT payment_method
FROM payment_plan 
WHERE ptid = 100 AND
      validfrom <= CURDATE() AND
      validto > CURDATE() AND
      payment_method IN ('CC', '*') ;

Если вы хотите, чтобы возвращалась только одна строка с приоритетом для значения, отличного от '*', добавьте:

ORDER BY (payment_method <> '*') desc
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...