2016-01-06 65 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'代码以获得完美的阅读。 –

相关问题