选择值与另一个表中的另一个值匹配的行

时间:2013-10-29 01:10:26

标签: sql database

我有一个关于SQL查询的问题我正在尝试制作,我希望有人可以帮助我。

所以我有三个表:活动,公司和公司组

我想只在公司进入第1组时从活动中选择行。 但我也希望在决赛桌中用公司名称替换​​companyid。

活动表:

+----+---------+----------+-----------+
| id | subject |   date   | comapnyid |
+----+---------+----------+-----------+
|  1 | Do this | 10-10-13 |     20985 |
|  2 | Do that | 11-11-13 |     18657 |
|  3 | Dont do | 12-12-13 |     22039 |
+----+---------+----------+-----------+

公司表:

+----+-----------+-------------+
| id | companyid | companyname |
+----+-----------+-------------+
|  1 |     20985 | Compone     |
|  2 |     18657 | Comptwo     |
|  3 |     22039 | Compthree   |
+----+-----------+-------------+

公司组表:

+----+-----------+---------+
| id | companyid | groupid |
+----+-----------+---------+
|  1 |     20985 |       1 |
|  2 |     20985 |       2 |
|  3 |     20985 |       3 |
|  4 |     18657 |       2 |
|  5 |     18657 |       3 |
|  6 |     22039 |       1 |
+----+-----------+---------+

我可以得到我的输出,在所有活动旁边给我一个公司名称的表,但我不知道如何只选择companyid与我的companygroup表中的组1匹配的行。我觉得我遇到了麻烦,因为每个groupid都有多个组条目,我不知道如何满足这一要求。

2 个答案:

答案 0 :(得分:1)

select a.id, a.subject, a.date, b.companyname
from activity a inner join company b on a.companyid=b.companyid
    inner join companygroup c on b.companyid=c.companyid
where c.groupid=1

答案 1 :(得分:0)

试试这个:

SELECT a.id, a.subject, a.date, c.companyname
FROM Activity a 
INNER JOIN Company c ON a.companyid = c.companyid
INNER JOIN Companygroup cg ON c.companyid = cg.companyid
WHERE cg.groupid = 1