У меня вопрос по SQL Server:
как узнать, какое имя имеет одинаковый или более цветной код при сравнении с таблицей цветов
Все цветовые коды из таблицы цветов совпадают с цветовым кодом, связанным с именемзатем отобразите это имя
Примеры:
persioncolores
таблица с name = tom
имеет цветовые коды red,blue,green,brown
Color
таблица имеет цветовые коды: Red,blue,green
Таким образом, все 3 цветовых кода tom
совпадают, затем отобразите его имя
Здесь: таблица цветов, связанная со всеми цветовыми кодами для имени Тома, поэтому нам нужнодля отображения этого имени
Аналогично имени Джо также есть все 3 цветовых кода, поэтому нам нужно отобразить это имя как вывод
Другое имя: у Хари есть только два соответствующих цветовых кода, поэтому не нужно отображатьего имя
nani имеет только 1 соответствующий цветовой код, поэтому нет необходимости отображать его имя
Test не имеет mathced colorcode, поэтому нет необходимости отображать его имя
CREATE TABLE [dbo].[colors]
(
[colorcode] [VARCHAR](50) NULL
)
CREATE TABLE [dbo].[PersionColors]
(
[Name] [VARCHAR](50) NULL,
[ColorCode] [VARCHAR](50) NULL
)
INSERT INTO [dbo].[colors] ([colorcode])
VALUES (N'Red'), (N'Blue'), (N'Green')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Tom', N'Red'), (N'Tom', N'Blue'), (N'Tom', N'Green'), (N'Tom', N'Brown')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Joe', N'Red'), (N'Joe', N'Blue'), (N'Joe', N'Green')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Hari', N'Red'), (N'Hari', N'Blue')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Nani', N'Blue')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Test', N'Orange')
На основевыше данных я хочу вывод, как это:
Name
------
Tom
Joe
Я пробовал этот SQL:
select distinct
name, a.colorcode
from
[dbo].[PersionColors] a
join
colors b on a.ColorCode = b.colorcode
where
a.ColorCode = 'red' or a.colorcode = 'blue' or a.colorcode = 'green'
Этот запрос не возвращает ожидаемый результат.
Подскажите, пожалуйста, как выполнить эту задачу в SQL Server?