我有这个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结果。我哪里错了?
答案 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'))