У меня есть две таблицы
table1
| a_id | a_name |
+-------+---------+
| 1 | foo |
| 2 | bar |
| 3 | joe |
| 4 | jhon |
table2
| b_id | a_id | b_exec |
+-------+------+---------+
| 1 | 1 | 2 |
| 2 | 1 | 1 |
| 3 | 1 | 0 |
| 4 | 2 | 2 |
| 5 | 2 | 0 |
| 6 | 3 | 2 |
Я хотел бы получить представление с b_exec_level.
Логика b_exec_level должна быть такой.
Присвоение приоритета 1, затем 0 изатем 2
Если существует 1 в b_exec, exec_level должен быть 1
Если существует 0 и не существует 1 в b_exec, exec_level должен быть 0
Если 1 или 0 не существует, exec_level должен быть 2.
Результат должен быть таким:
view
| a_id | a_nome | b_exec_level |
+------+--------+--------------+
| 1 | foo | 1 |
| 2 | bar | 0 |
| 3 | joe | 2 |
| 4 | jhon | 2 |
Я пытался использовать CASE таким образом
select
t1.a_id,
t1.a_name,
( case when ( t2.b_exex = 0) then 0
when ( t2.b_exex = 1) then 1 else 2 end) AS b_exec_level
from ( table1 t1 left join table2 t2 on( (t1.a_id = t2.a_id) ) )
group by t1.a_id;
, но результат зависит от порядка, в котором они являются данными в t1.b_exec, если он был вставлен до значения 1 или 0.
Вы можете каким-то образом это сделать?Спасибо