У меня есть следующие таблицы:
User 1:n UserFilter n:1 Filter
Filter
получил ID
и Name
, User
получил свой Name
как ID
(не вините меня, не моя идея!).
Весь пользователь "a" получил Фильтры 1, 2 и 3 "- идея используется в интерфейсе ASP, что не важно для вопроса.
UserFilter
просто получил 2 столбца, User
и FilterID
, поэтому, если есть столбец Пользователь a - Фильтр 1, это означает, что Пользователь a использует Фильтр 1, если такого столбца нет, значит, он не .
Теперь я хотел бы выполнить запрос SELECT, который возвращает каждый фильтр (всего их 8) для определенного пользователя с пользовательским столбцом с именем active
.
Вот что я получил до сих пор:
select
distinct f.Name, f.Type,
case when uf.userid = 'a' then 1 else 0 end as Active
from filter f
left outer join userfilter uf on f.id = uf.filterid
where uf.userid = 'a' or uf.userid is null
Это вернет 8 столбцов, некоторые с Active = 0
, а некоторые с Active = 1
, как я и хотел, НО, если UserFilter
содержит фильтры нескольких пользователей, например,
a - 1
a - 2
b - 3
b - 7
a - 8
, и я запускаю этот запрос для пользователя "a", запрос будет возвращать только фильтр 1 как активный, 2 как активный, 4 5 и 6 как неактивный и 8 как активный, полностью исключая 3 и 7.
Есть идеи?
Спасибо!