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

标签 sql database

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

相关文章:

sql - 在关系数据库中存储分层数据有哪些选项?

python - Python 中的表列寻址

java - Connection.isValid(time) 实际上做了什么来检查连接是否有效?

mysql - 当 WHERE 子句与该列进行比较时,不使用 TIMESTAMP 列上的索引

php - 使用 PHP 将 MySQL 从本地主机恢复到实时服务器

mysql - 执行包含删除查询的存储过程的用户是否需要删除权限?

php - 如何统计mysql pdo中句子中的单词数

sql - where子句中的位域

sql - SQL Server 中带有 IF 条件的 CONCAT

php - mysql 'likes' 结构表