ЕСЛИ утверждение в ГДЕ состоянии - PullRequest
0 голосов
/ 17 мая 2018

У меня есть две связанные таблицы;категории и подписки.Соотношение категорий-> подписок не всегда существует.Поэтому мне нужно что-то вроде:

SELECT * FROM categories
LEFT JOIN subscriptions 
ON subscriptions.category_id = categories.category_id 
WHERE
 IF EXISTS(subscriptions.is_enable)
  categories.type = 'premium' AND
  subscriptions.is_enable = 1
ELSE
  categories.type = 'premium' AND

Есть ли способ написать условие, как это?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы можете переписать свое состояние логически следующим образом:

SELECT * FROM categories
LEFT JOIN subscriptions 
ON subscriptions.category_id = categories.category_id 
WHERE (subscriptions.is_enable IS NULL OR subscriptions.is_enable = 1)
  AND categories.type = 'premium'
0 голосов
/ 17 мая 2018

Поскольку все термины в ваших предложениях if / else логически объединены, вы можете просто сгруппировать их логически.

SELECT * FROM categories
LEFT JOIN subscriptions 
ON subscriptions.category_id = categories.category_id 
WHERE
  (EXISTS(subscriptions.is_enable) AND 
  categories.type = 'premium' AND
  subscriptions.is_enable = 1)
OR
  (categories.type = 'premium' AND...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...