Sql server 如何在SQL Server中显示具有所有颜色代码的同一个人?

Sql server 如何在SQL Server中显示具有所有颜色代码的同一个人?,sql-server,Sql Server,我有一个关于SQL Server的问题: 如何在与颜色表比较时获得具有相同或更多颜色代码的名称 颜色表中的所有颜色代码与名称相关的颜色代码匹配,然后显示该名称 示例: personcolors带有name=tom的表格具有颜色代码红色、蓝色、绿色、棕色 颜色表格有颜色代码:红色、蓝色、绿色 因此,tom的所有3个颜色代码都匹配,然后显示他的名字 CREATE TABLE [dbo].[colors] ( [colorcode] [VARCHAR](50) NULL ) CREAT

我有一个关于SQL Server的问题:

如何在与颜色表比较时获得具有相同或更多颜色代码的名称

颜色表中的所有颜色代码与名称相关的颜色代码匹配,然后显示该名称

示例:

  • personcolors
    带有
    name=tom的表格
    具有颜色代码
    红色、蓝色、绿色、棕色
  • 颜色
    表格有颜色代码:
    红色、蓝色、绿色
因此,
tom
的所有3个颜色代码都匹配,然后显示他的名字

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')
这里:与颜色表相关的所有颜色代码都用于tom的名称,因此我们需要显示此名称

和joe的名字类似,joe也有所有3种颜色代码,所以我们需要将这个名字显示为输出

另一个名字:Hari只有两个匹配的颜色代码,所以不需要显示他的名字

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')
纳尼只有1个匹配的颜色代码,所以不需要显示他的名字

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')
测试没有数学上的色码,所以不需要显示他的名字

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中完成此任务吗?

让我们假设一个包含Mary和Lola的表,Mary有黄色和绿色,Lola有蓝色和红色。您希望在输出中使用什么名称?二者都为什么?我们假设一张桌子上有玛丽和萝拉,玛丽有黄色和绿色,萝拉有蓝色和红色。您希望在输出中使用什么名称?二者都为什么?这是关于如何有更多不同的颜色?