我有一张表如下:
`team_by_membre` (
`id_team_by_membre` int(11) NOT NULL AUTO_INCREMENT,
`id_membre` int(11) NOT NULL,
`id_team` int(11) NOT NULL,
`level` int(2) NOT NULL COMMENT)
在此表中,我试图列出由一个成员(经理)管理的团队成员的所有成员的列表。如果级别= 1(级别= 0玩家),团队由成员管理。澄清一下:在这张表中,你有很多队员和每个队员一个经理(等级= 1)。
找出我的经理管理的团队:
SELECT rm.id_team
FROM team_by_membre rm
WHERE rm.id_membre = ?
AND rm.level = '1'
(在我目前的表中,其中一名成员正在管理3个团队)
但是如何列出此表中由该经理管理的团队成员中所有玩家(成员)的列表?有什么想法吗?
答案 0 :(得分:1)
SELECT
*
FROM
team_by_membre
WHERE
id_team IN (
SELECT
id_team
FROM
team_by_membre
WHERE
id_membre = ?
AND
level = 1
);
答案 1 :(得分:1)
使用连接应该比子查询更快并且非常简单:
SELECT t.*
FROM team_by_membre t
JOIN team_by_membre mgr
WHERE t.id_team=mgr.id_team
AND mgr.level = 1
AND mgr.id_membre = ?