Как отобразить один и тот же человек все цветовые коды в SQL Server? - PullRequest
1 голос
/ 21 марта 2019

У меня вопрос по 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...