2016-07-10 49 views
0

我有三个表SQL查询条件选择一个特定的表

Users (ID - Name) 
Services (ID - Name) 
UserServices (ID - USerID- ServiceID) 

我想选择一个不属于用户

如服务名的特定记录: 如果我有三个用户和10个服务

首先用户属于3个服务,所以我想选择其他7个服务

+0

“eg”是用户吗? – Kinetic

+0

@KiNeTiC不,_eg_(例外)指拉丁语中的_例如_;它也常用于Enlish中。 – jpw

+0

我不知道。英语不是我的主要语言。 – Kinetic

回答

1
SELECT S.ID, S.Name 
FROM Services AS S 
LEFT JOIN UserServices AS US 
ON US.ServiceID = S.ID 
AND US.UserID = @UserID 
WHERE US.ServiceID IS NULL 

所以,选择有该用户标识不匹配UserServices服务。我还将您的US.ID更改为US.UserID,如果US.ID确实包含您的用户标识,请将其更改回来。

0

有很多的方式来获得你想要的结果,这我就有一个:

SELECT S.ID, S.Name 
FROM UserServices AS US 
INNER JOIN Services AS S ON US.ServiceID = S.ID 
WHERE US.UserID <> @UserID 
+0

所以,如果我想选择基于UserID的服务?我的意思是第一个用户有3个服务,所以我想为这个用户选择其他服务,这需要定义用户和用户服务之间的关系 –

+1

<>是一个问题。如果有10个用户,并且您为其中的1个运行这个用户,则您将获得其他9个用户的所有记录。 – JBrooks