连接 SQLite 表

Joining SQLite Tables

我有以下三个 table 作为任务 1、任务 2 和任务 3 table enter image description here

我想加入所有这三个 table 结果应该如下所示 enter image description here

下面是我试过的查询,但它没有按预期工作

SELECT mission1_1.missionIdentifier, mission1_1.M1,mission2_2.M2,mission1_1.Timestamp 
FROM mission1_1 
INNER  JOIN mission2_2  ON mission1_1.timeStamp = mission2_2.timeStamp 

如果您 table 名称是 Mission1、Mission2 和 Mission3,并且所有 3 个都有 MissionIdentifier、Mission_id 和 Timestamp 列,那么您的查询将失败,因为:-

  • 没有 table 名为 mission1_1
  • 没有 table 名为 mission2_2
  • table mission1 中没有 M1 列(假设 mission1 是正确的 table 名称)
  • table mission2 中没有 M2 列(再次假设 mission2 是正确的 table 名称)

由于任务 3 table 未加入,您的查询无法产生任何接近预期的结果。

解决上述问题后,您似乎希望查询为:-

SELECT 
    mission1.missionIdentifier, 
    mission1.mission_id AS Mission_1,
    mission2.mission_id AS Mission_2,
    mission3.mission_id AS Mission_3,
    mission1.Timestamp
FROM mission1
INNER JOIN mission2  ON mission1.timeStamp = mission2.timeStamp 
INNER JOIN mission3 ON mission1.timestamp = mission3.timestamp
;

但是,这不会产生预期的结果。而不是指示的数据(除了 missionidentifiers 已被缩短,为简洁起见,数据的前 2 个字符)然后它将输出 :-

即您的 select 来自 mission1 table 的 2 行,然后从 mission2 table 的单行中添加额外的列,然后为 mission3 中的单行添加额外的列 table 和因此,所有数据的 2 行都具有相同的时间戳。

我怀疑您想要的可以通过以下查询实现,尽管它不是按照您显示的顺序:-

WITH cte AS (
    SELECT  mission_id,missionIdentifier, timestamp 
    FROM mission1 
    UNION SELECT mission_id,missionIdentifier, timestamp FROM mission2 
    UNION SELECT mission_id,missionIdentifier, timestamp FROM mission3
)
SELECT 
    cte.missionidentifier,
    cte.mission_id,
    mission1.mission_id AS mission1, 
    mission2.mission_id AS mission2, 
    mission3.mission_id AS mission3, 
    cte.timestamp AS timestamp
FROM cte 
    LEFT OUTER JOIN mission1 ON mission1.missionidentifier = cte.missionidentifier 
    LEFT OUTER JOIN mission2 ON mission2.missionidentifier = cte.missionidentifier
    LEFT OUTER JOIN mission3 ON mission3.missionidentifier = cte.missionidentifier
ORDER BY cte.mission_id ASC
;

哪个 produces/results 在 :-