У меня есть таблица tblRater (которая объединяет всех пользователей, которые могут оценивать тему), пример данных которой выглядит следующим образом:
RaterID | Name |
=================
rater_1 |Katty |
rater_2 |Batty |
rater_3 |Ratty |
rater_4 |Shatty |
rater_5 |Patty |
есть еще одна таблица tblAuthorizedRater (которая содержит данные о том, какой оценщик являетсяназначен для оценки какой темы), чьи типовые данные имеют следующий вид:
TopicID | RaterID |
===================
topic_1 | rater_1 |
topic_1 | rater_2 |
topic_1 | rater_3 |
topic_2 | rater_2 |
topic_2 | rater_3 |
topic_3 | rater_1 |
topic_3 | rater_2 |
topic_6 | rater_1 |
Поэтому, когда я ищу список оценщиков, которым разрешено оценивать theme_1, я ожидаю следующие данные:
RaterID | Authorized|
=====================
rater_1 | 1 |
rater_2 | 1 |
rater_3 | 1 |
rater_4 | 0 |
rater_5 | 0 |
Приведенная выше таблица представляет собой список всех оценщиков из tblRater и список авторизованных оценщиков для topic_1 из tblAuthorizedRater.
Я попытался выполнить левое соединение с tblRater слева и tblAuthorizedRater справа и ifсостояние.Однако результаты, которые я получаю, повторяют RaterID, и если я создаю группу, я не получаю ожидаемый результат.
Просто для справки, этот запрос я пробовал до сих пор:
select
tr.RaterID,
IF(tar.TopicID = 'topic_1', 1, 0) as Authorized
from tblRater as tr
left join tblAuthorizedRater as tar
on tr.RaterID = tar.RaterID;
Я также пытался посмотреть на subselect, union, но ничего из этого не помогло.