0

我有一个关于我试图做的 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 匹配的行。我想我遇到了麻烦,因为每个 companyid 有多个组条目,我不知道如何解决这个问题。

4

2 回答 2

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
于 2013-10-29T01:14:32.887 回答
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
于 2013-10-29T01:15:02.410 回答