Tsql 查询以查找提供所有服务的所有提供商
假设我们有一个provider\u服务表,它存储了提供者提供的所有服务 Provider_服务表:ProviderID | ServiceId 然后我们有一个带有服务列表的表值参数@idServicesTsql 查询以查找提供所有服务的所有提供商,tsql,Tsql,假设我们有一个provider\u服务表,它存储了提供者提供的所有服务 Provider_服务表:ProviderID | ServiceId 然后我们有一个带有服务列表的表值参数@idServices 我需要对SQLSERVER进行查询,以查找提供表值参数中指定的所有服务的所有提供者。假设我理解您的问题,并且假设TVP中的字段是ServiceId,则这只是两者之间的内部联接 SELECT ps.* FROM Provider_Service ps INNER JOIN @idServices
我需要对SQLSERVER进行查询,以查找提供表值参数中指定的所有服务的所有提供者。假设我理解您的问题,并且假设TVP中的字段是ServiceId,则这只是两者之间的内部联接
SELECT ps.*
FROM Provider_Service ps
INNER JOIN @idServices s ON s.ServiceId = ps.ServiceId
SELECT
*
FROM
Provider_Service PS
INNER JOIN
@idServices IS
ON IS.ServiceId = PS.ServiceId
一种解决方案是双重否定:不存在服务的所有提供者都不由该提供者提供服务。在SQL中:
select distinct ps1.ProviderID
from Provider_Service ps1
where not exists
(
select *
from @idServices is
where not exists
(
select *
from Provider_Service ps2
where ps2.ProviderID = ps1.ProviderID
ps2.ServiceId = is.ServiceID
)
)
谢谢,这就是我要找的。(在我的例子中,我不需要DISTINCT,因为ProviderID,ServiceID是一个唯一的键)@sil具有的
保证表值参数中的所有服务都在主表中找到。
select distinct ps1.ProviderID
from Provider_Service ps1
where not exists
(
select *
from @idServices is
where not exists
(
select *
from Provider_Service ps2
where ps2.ProviderID = ps1.ProviderID
ps2.ServiceId = is.ServiceID
)
)