让团队成员加入MySQL的特定团队

时间:2013-11-26 05:50:04

标签: mysql sql

我有这个Teams表(也可以是Projects表)和Members表

+-----------+--------------+------+-----+---------+----------------+
| Field     | Type         | Null | Key | Default | Extra          |
+-----------+--------------+------+-----+---------+----------------+
| id        | int(11)      | NO   | PRI | NULL    | auto_increment |
| team_name | varchar(100) | NO   | UNI | NULL    |                |
| team_desc | varchar(200) | NO   |     | NULL    |                |
| createdby | varchar(100) | NO   |     | NULL    |                |
+-----------+--------------+------+-----+---------+----------------+

和会员表

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| firstname   | varchar(45)  | NO   |     | NULL    |                |
| lastname    | varchar(45)  | NO   |     | NULL    |                |
| address     | varchar(200) | NO   |     | NULL    |                |
| city        | varchar(45)  | NO   |     | NULL    |                |
| state       | varchar(45)  | NO   |     | NULL    |                |
| country     | varchar(45)  | NO   |     | NULL    |                |
| email       | varchar(45)  | NO   |     | NULL    |                |
| phone       | varchar(10)  | YES  |     | NULL    |                |
| experience  | varchar(45)  | NO   |     | NULL    |                |
| designation | varchar(45)  | NO   |     | NULL    |                |
| username    | varchar(45)  | NO   |     | NULL    |                |
| password    | varchar(45)  | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

这两个表由这个teams_members表连接,

+------------------+---------+------+-----+---------+----------------+
| Field            | Type    | Null | Key | Default | Extra          |
+------------------+---------+------+-----+---------+----------------+
| teams_members_id | int(11) | NO   | PRI | NULL    | auto_increment |
| teams_id         | int(11) | NO   | MUL | NULL    |                |
| members_id       | int(11) | NO   | MUL | NULL    |                |
+------------------+---------+------+-----+---------+----------------+

我想要做的是让特定团队的成员。我很困惑,我将如何做到这一点(可能是我愚蠢的:P)

SELECT * 
FROM teams_members tm, members m, teams t 
WHERE tm.members_member_id = m.id 
AND t.team_name='team name can be anything'
AND tm.id = t.id

返回0结果。我哪里错了?

2 个答案:

答案 0 :(得分:2)

在您的查询中,join with teams_member and team 不正确

试试这个:

SELECT * 
FROM teams_members tm, members m, teams t 
WHERE tm.members_member_id = m.id 
AND t.team_name='team name can be anything'
AND tm.teams_id = t.id

SELECT * 
FROM teams_members tm
inner join members m on tm.member_id=m.id
inner join teams t on tm.teams_id=t.id
WHERE 
t.team_name='team name can be anything'

答案 1 :(得分:0)

如果您打开使用嵌套查询:

    select *
    from Members
    where id in(
                 select members_id
                 from team_members
                 where teams_id in(
                                   select id
                                   from teams
                                   where team_name='anything'))