我有一个MySQL问题,我想知道答案是否在于使用连接。如果标题令人困惑或误导,我会提前道歉。
我有2个表:团队,承包商
TEAMS
|team_id | location|
--------------------
| 1 | space1 |
--------------------
| 2 | space2 |
--------------------
| 3 | space3 |
--------------------
CONTRACTORS
|cont_id | location| team_id|
-----------------------------
| 1 | space1 | 1 |
-----------------------------
| 2 | space1 | 0 |
-----------------------------
| 3 | space3 | 3 |
-----------------------------
| 4 | space3 | 3 |
-----------------------------
| 5 | space3 | 0 |
-----------------------------
我想创建一个查询,查找位于特定位置的所有承包商。问题是,我只知道team_id。 (承包商表中的team_id = 0
表示承包商目前不是团队的一部分)。
例如,我获得了team_id = 3.
team_id = 3
的团队位于space3。我想找到位于space3的所有承包商(本例中cont_id = 3,4,5)。
有没有办法通过单个MySQL查询实现这一目标?或者我是否需要执行查询以获取团队的位置,然后进行第二次查询以查找该位置的所有承包商?
答案 0 :(得分:0)
select location
from CONTRACTORS
inner join TEAMS on TEAMS.location = CONTRACTORS.location and TEAMS.team_id = 3
答案 1 :(得分:0)
您可以使用加入
SELECT t.*,c.*
FROM TEAMS
INNER JOIN CONTRACTORS c
ON c.team_id = t.team_id
WHERE t.team_id = 3
答案 2 :(得分:0)
一个SQL查询:
SELECT cont_id
FROM teams, contractors
WHERE teams.location = contractors.location
AND teams.team_id = 3;
替换' 3'与你想要的团队。
注意:此查询仅返回cont_id。你没有具体说明你需要什么,但我至少猜测你需要cont_id来识别承包商。