У меня есть следующая таблица групп вопросов:
ID, NAME, DESCRIPTION, VERSION_ID
Столбцы таблицы версий:
ID, NUMBER, VERSION_STATE
VERSION_STATE
- это перечисление, которое может быть 0, 1 или 2.
Мне нужно выбрать всю группу вопросов, в которой в ее версии есть vVERSION_STATE
0 или 1, но если есть группа вопросов с VERSION_STATE = 0
, мне не нужно возвращать группу вопросов с VERSION_STATE = 1
.
Самый простой подход:
SELECT distinct QG.id FROM healthsafety.hs_questions_group QG
LEFT OUTER JOIN (SELECT * FROM healthsafety.hs_version) VERSION
ON QG.VERSION_ID = VERSION.ID
WHERE
VERSION.VERSION_STATE=0
OR VERSION.VERSION_STATE=1
Проблема в том, что этот запрос возвращает все группы вопросов с VERSION_STATE
0 или 1. Если я удалю предложение или и нет групп вопросов с VERSION_STATE = 0
, мне нужно вернуть группы вопросов с VERSION_STATE = 1
.
Я думаю, что мне нужен оператор if else или case, но я застрял. Любая идея?
Обратите внимание, что я должен реализовать это, используя критерии, поэтому мне нужно использовать самое простое решение.