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

时间:2019-03-21 17:27:11

标签: sql-server

我对SQL Server有疑问:

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

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

示例:

    带有persioncolores
  • name = tom表的颜色代码为red,blue,green,brown
  • Color表具有颜色代码:Red,blue,green

因此tom的所有3个颜色代码都匹配,然后显示他的名字

在这里:与颜色表相关的所有颜色代码都具有tom的名称,因此我们需要显示该名称

类似于joe的名称也具有所有3种颜色代码,因此我们需要将此名称显示为输出

另一个名字:Hari只有两个匹配的颜色代码,因此无需显示他的名字

nani只有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')

基于以上数据,我想要这样输出:

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

0 个答案:

没有答案