2016-01-06 26 views
0

我的數據庫看起來像這樣,在用戶,userteam(連接表)和車隊指令:選擇所有用戶誰不是在一個團隊

Usertable    UserTeam    Teamtable 
+--------+------+ +--------+--------+ +--------+-------+ 
| userid | name | | userid | teamid | | teamid | name | 
+--------+------+ +--------+--------+ +--------+-------+ 
| 1  | eric | | 1  |  1 | |  1 | awsm | 
| 2  | john | | 1  |  2 | |  2 | doe | 
| 3  | carl | | 2  |  1 | |  3 | empty | 
+--------+------+ | 3  |  1 | +--------+-------+ 
        +--------+--------+ 

如何選擇,在是不是所有用戶一個團隊,並只回聲一次?我試着與用戶表做,但隨後會響應舉例來說,如果我嘗試和選擇所有成員不在隊以3:

SELECT userid FROM userteam WHERE teamid!=3; 
SELECT * FROM user WHERE userid='$previousSql'; 

1 eric 
1 eric 
2 john 
3 carl 

想我的卻是:

1 eric 
2 john 
3 carl 

我正在添加成員函數,我非常不喜歡每個人都出現多次..任何方向,幫助或指導將不勝感激。

+1

請在查詢添加組例如SELECT * FROM user WHERE userid ='$ previousSql'group by name; –

回答

0

這應做到:

SELECT u.userid, u.name FROM Usertable u 
INNER JOIN UserTeam ut ON ut.userid = u.userid 
INNER JOIN Teamtable tt ON tt.teamid = ut.teamid 
WHERE tt.teamid != 3 
GROUP BY u.userid, u.name; 
+0

「FROM Usertable u」 –

+0

單詞「你」在做什麼? –

+0

你是Usertable的別名 – Daan

0
SELECT userid, name FROM usertable 
JOIN userteam ON userteam.userid = usertable.userid 
JOIN teamtable on teamtable.teamid = userteam.teamid 
WHERE teamtable.teamid = 3; 

的SQL上面應該做的所有表之間的適當連接,然後將只列出的誰擁有3在teamtable

編輯teamid *移除人的用戶ID /名字!來自WHERE子句。

+0

嗯..我想列出每個人都不是ID爲3的團隊成員.. –

+0

然後刪除!從WHERE子句... – Haymaker

1

添加

GROUP BY name 

到查詢

+0

請添加所有'select'代碼以獲得完美的閱讀。 –

相關問題