2013-08-05 64 views
1

我有一个表,其中包含operatorsoperatorgroups。 运营商通过链接表链接到'运营商组'。 现在,对于每个“运营商组”,我想选择与其链接的运营商。对于表中的每个唯一键执行select语句

它需要是动态的,所以当创建一个新的'operatorgroup'时,我不必调整查询。

我现在要做的是重复以下查询来列出操作符的名称和'operatorgroup'的名称,但每次添加'operatorgroup'时都必须重写查询。 我怎么能做出同样的查询所有不同 'operatorgroups'

SELECT Distinct A.[ref_dynanaam], A.[naam] 
FROM [dbo].[actiedoor] A 
LEFT JOIN [dbo].[actiedoorlink] B 
ON B.[actiedoorid]=A.[unid] 
OR B.[actiedoorgroepid] = A.[unid] 
WHERE B.[actiedoorgroepid] ='unid' AND status >='1' 
order by A.[naam] Desc 

这给了我

ref_Dynanaam纳摩
Makelaars Makelaars
的Eyk,约翰·范
Hoetmer,JanR
Rooijen,Manon van

请注意,只有教练出现两次。 我想说列表中的所有“operatorgroups”(为每个不同的b.actiedoorgroepid)
截图1 不能因少数TO0点声望
发布截图来自“actiedoor”和actiedoorlink表
=某款截图2
无法张贴的截图,由于TO0几个点名誉
=上述查询的结果

另一个编辑:
所以,我更进了一步。
通过执行以下查询我得到那种我需要什么:

SELECT Distinct A.[ref_dynanaam], A.[naam], B.[actiedoorgroepid] 
FROM [dbo].[actiedoor] A 
LEFT JOIN [dbo].[actiedoorlink] B 
ON B.[actiedoorid]=A.[unid] 
OR B.[actiedoorgroepid] = A.[unid] 
WHERE (B.[actiedoorgroepid] 
IN (Select DISTINCT B.[actiedoorgroepid]from actiedoorlink as B 
WHERE B.[actiedoorgroepid] = B.[actiedoorgroepid]) AND A.[status] >='1') 
GROUP BY B.[actiedoorgroepid], A.[naam], A.[ref_dynanaam] 

这给了我:

ref_Dynanaam NAAM actiedoorgroepid
Hoetmer,扬4e0001
Leurink,罗布4e0001
Rooijen ,Manon van 4e0001
Soodoo,Adjai 4e0001
Ideenmanagement Ideeenmanagement 4e0 001
的Eyk,约翰·范4a0002
Hoetmer,扬4a0002
Rooijen,曼侬面包车4a0002
Makelaars Makelaars 4a0002

现在,在结果集中的每一行,我需要执行另一个子查询。
有什么建议吗?

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

明白了!谢谢。 – Onnie

回答

0

我决定采取不同的方法,而忘记了整个查询。相反,我决定做一个简单的查询,并在我用来获取我需要的数据的程序中使用过滤系统。 感谢您的帮助!

0

我认为你需要做一个自我加入

SELECT A.[actiedoorid] AS [operatorid],A.[unid] 
FROM [dbo].[actiedoorlink] A 
JOIN [dbo].[actiedoorlink] B 
ON A.[actiedoorgroepid]=B.[actiedoorgroepid] 
相关问题