加入并显示表格中的不同列

问题描述:

我有一个简单的SQL问题,我认为这将是非常直接的,但让自己陷入混乱。任何帮助,将不胜感激加入并显示表格中的不同列

我有一个包含上次更新 表一个表有一对多与表B 表B有一对多与表C

我想告诉所有的行表C的最后一次更新时间从表A.我尝试了一些连接,但他们似乎不工作。理想情况下,我想要类似于

select a.lastUpdated c.* from TableA a, TableC c where 
a.id in (select a_id from TableB where (select b_id from TableC where c_id = select 
id from TableC where XXXX=YYYY)) 

所以我可以传入表C的ID,然后得到一行返回最后更新的时间目前。

XXX = YYY将是我的标准返回表的一行C.

任何帮助或指针赞赏

感谢

喜欢的东西

SELECT c.* 
FROM TableA AS a 
    INNER JOIN TableB AS b 
    ON a.a_id = b.b_id 
     INNER JOIN TableC AS c 
     ON b.b_id = c.c_id 
WHERE a.lastUpdated = c.lastUpdated; 

应该工作。在这种情况下,一个特定的INNER JOIN就足够了;除非我错过了某些东西。

我希望这会有所帮助。

您应该能够通过连接A和B一起做这个,综合这些结果在C_ID级别,然后用C加入:

select tc.*, maxlastupdated 
from tablec tc left outer join 
    (select tb.c_id, max(lastupdated) as maxlastupdated 
     from tablea ta join 
      tableb tb 
      on ta.b_id = tb.b_id 
     group by ta.id 
    ) ta 
    on tc.c_id = ta.c_id 

您需要驱动从表C.您的SQL查询 查询下面显示从表A 更新时间戳列既然是一个一对多表A的方向 - “乙 - > C 您将不可避免地以表C中的很多行结束 - 所有行都具有相同的时间戳。

SELECT c.*, a1.update_timestamp 
FROM table_c c, table_b b, table_a a1 
WHERE c.join_column = b.join_column 
AND b.join_column = a1.join_column 
AND a1.update_timestamp = 
(SELECT max(a2.update_timestamp) FROM table_a a2 
WHERE a2.<identifying columns> = a1.<identifying columns> 
);