2014-01-28 61 views
0

我有一个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

只是一个快速谢谢那些谁花了一点时间来帮助我。 :) – brybott

回答

0
select location 
from CONTRACTORS 
inner join TEAMS on TEAMS.location = CONTRACTORS.location and TEAMS.team_id = 3 
+0

我不得不选择CONTRACTORS.location,但否则这工作完美,谢谢。 – brybott

0

您可以使用加入

SELECT  t.*,c.* 
FROM   TEAMS 
INNER JOIN CONTRACTORS c 
ON   c.team_id = t.team_id 
WHERE   t.team_id = 3 
0

一个SQL查询:

SELECT cont_id 
FROM teams, contractors 
WHERE teams.location = contractors.location 
AND teams.team_id = 3; 

替换 '3' 与你想要的球队。

注意:此查询只返回cont_id。你没有具体说明你需要什么,但我至少猜测你需要cont_id来识别承包商。

相关问题