2016-07-10 53 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