加入并显示表格中的不同列
问题描述:
我有一个简单的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>
);