我有一个关于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都有多个组条目,我不知道如何满足这一要求。
答案 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