gpt4 book ai didi

sql - 连接两个表,然后连接第三个

转载 作者:太空狗 更新时间:2023-10-30 01:50:58 25 4
gpt4 key购买 nike

我有一个 SQL 查询,我想将两个表连接在一起,然后使用该连接表连接第三个表。我试着用谷歌搜索如何做到这一点,但它的措辞很尴尬,没有发现任何有用的东西。这是我尝试使用的代码:

SELECT t.id AS ID
, a.id AS ActivityID
, t.ProjectType AS ProjectType
, t.Tier1Mission AS Mission
, m.id ASMissionID
, m.name AS MissionName
, t.Tier2Activity AS Activity
, a.name AS ActivityName
, t.Tier3Project AS Project
FROM tActivity a
INNER JOIN
(SELECT id, name FROM tMission) m
ON tActivity.missionId = MissionID
LEFT OUTER JOIN
(SELECT *
FROM tTaxonomy
WHERE Tier1Mission = m.name AND Tier2Activity = a.name)

编辑:我遇到的主要问题是 tActivity 表中的条目具有相同的“名称”但引用不同的 MissionId。加入所有表很容易,但需要有正确的 MissionID,关系保存在第三个表“tTaxonomy”中。

最佳答案

您几乎已经做到了,但是您需要一个别名和一个 ON 子句用于您的第二个连接 insetad WHERE 子句。此外,在您的第一个 ON 子句中,使用表别名 a 而不是原始名称。

SELECT t.id AS ID
, a.id AS ActivityID
, t.ProjectType AS ProjectType
, t.Tier1Mission AS Mission
, m.id ASMissionID
, m.name AS MissionName
, t.Tier2Activity AS Activity
, a.name AS ActivityName
, t.Tier3Project AS Project
FROM
tActivity a
INNER JOIN
(SELECT id, name FROM tMission) m
ON a.missionId = m.id
LEFT OUTER JOIN
(SELECT *
FROM tTaxonomy
) t ON t.Tier1Mission = m.name AND t.Tier2Activity = a.name

但是,仔细查看一下,我发现没有任何东西需要使用连接子查询。子查询中没有聚合或限制需要它们。您可以只使用普通表连接:

SELECT t.id AS ID
, a.id AS ActivityID
, t.ProjectType AS ProjectType
, t.Tier1Mission AS Mission
, m.id ASMissionID
, m.name AS MissionName
, t.Tier2Activity AS Activity
, a.name AS ActivityName
, t.Tier3Project AS Project
FROM
tActivity a
INNER JOIN tMission m ON a.missionId = m.id
LEFT JOIN tTaxonomy t ON t.Tier1Mission = m.name AND t.Tier2Activity = a.name

关于sql - 连接两个表,然后连接第三个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com