SQL按外键分组

时间:2018-08-31 07:27:47

标签: c# sql-server

我有一个表Channel,其中有所有可用的通道,还有另一个表Channel_availableSpecs,其中将通道ID链接到规格ID。我已经完成了inner join的操作以获取频道名称。

我需要执行的操作基于C#中的checkedlistbox我要填充具有选定规格的所有可用通道的列表

我用SQL编写了以下查询,它可以工作,但是如果满足条件,它将显示所有记录,因此,我有四次channel one,因为它的规格为1、2、4和5。 / p>

select c.Name
from [dbo].[Channel_availableSpecs] asp
inner join [dbo].[Channel] c on asp.Channel_Id = c.ID 
where asp.ChennelSpec_Id IN ('1' , '2','4' ,'5')

因此,我试图按频道id对它们进行分组,以便能够一次查看该频道,因此我尝试说服它无法工作。

select c.Name
from [dbo].[Channel_availableSpecs] asp
inner join [dbo].[Channel] c on asp.Channel_Id = c.ID 
where asp.ChennelSpec_Id IN ('1' , '2','4' ,'5') Group by asp.Channel_Id

您能否解决此问题以及如何处理规格ID的动态列表(而不是1,2,4和5)以使条件成立。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用子查询 https://community.modeanalytics.com/sql/tutorial/sql-subqueries/

select subqueryResult.Name from 
(
select c.Name, asp.Channel_Id
    from [dbo].[Channel_availableSpecs] asp
    inner join [dbo].[Channel] c on asp.Channel_Id = c.ID 
    where asp.ChennelSpec_Id IN ('1' , '2','4' ,'5') 
) 
as subqueryResult
group by subqueryResult.Channel_Id