在同一查询中使用查询结果?

时间:2014-01-28 06:01:59

标签: mysql

我有一个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查询实现这一目标?或者我是否需要执行查询以获取团队的位置,然后进行第二次查询以查找该位置的所有承包商?

3 个答案:

答案 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来识别承包商。