Я пытаюсь определить, есть ли у компьютера в нашей организации определенные приложения, назначенные ему.Проблема, с которой я столкнулся, заключается в том, что в левом соединении перечисляются дубликаты, перечисляются все назначения, а не в идеале указывается имя компьютера, затем 1, если приложение (-я) назначено ему, или 0, если у него нет ни одного из них.приложения, назначенные ему.Какой подход я должен использовать для достижения этой цели?
Список приложений может содержать до 100+ приложений, поэтому мне нужно использовать IN.Я не могу изменить ни один из столбцов БД.
http://sqlfiddle.com/#!9/a5a387/5
Любая помощь приветствуется !!!
CREATE TABLE macs
(`wsid` int, `mach_name` varchar(20))
;
CREATE TABLE assignments
(`wsid` int, `adp_id` int)
;
INSERT INTO macs
(`wsid`, `mach_name`)
VALUES
(1, 'computer1'),
(2, 'computer2'),
(3, 'computer3')
;
INSERT INTO assignments
(`wsid`, `adp_id`)
VALUES
(1, '100'),
(1, '101'),
(1, '103'),
(2, '100'),
(2, '101'),
(3, '100'),
(3, '101'),
(3, '103')
;
и запрос:
select mach_name,
CASE
WHEN b.adp_id in(103) THEN 1 ELSE 0 END
from macs a
left join assignments b on a.wsid = b.wsid