我有2张桌子。
TABLE_1 ( id, date, column_1 )
TABLE_2 ( id, date, column_1, column_2 )
id和日期对于两个表都是通用的。我想把这两者结合起来。
VIEW_LATEST ( index, table_name, id, date)
在视图中,我需要一个索引来分别标识一个特定的行(不是必须的)。在那里,我将使用表名来确定从哪里获取特定行(id,date)的详细信息。并且,我只需要获取特定时期的信息(例如,上周)。
EG。
TABLE_1 ([ 1, 2012-01-27 ], [2, 2012-02-01 ])
TABLE_2 ([ 1, 2012-01-20 ], [ 2, 2012-01-31 ])
VIEW_LATEST ([ tbl_1, 2, 2012-02-01 ], [ tbl_2, 2, 2012-01-31 ], [ tbl_1, 1, 2012-01-27])
上周 - 2012-01-26至2012-02-01,因此在视图中未返回TABLE_2第一条记录。 按日期订购。
我需要完全按照上面提到的那样做。我找了一个这样的解决方案而没有找到。
高度赞赏任何实现上述方案的解决方案。此外,在将数据插入TABLE_1,TABLE_2时,期望创建一个单独的格式为VIEW_LATEST的表来插入数据,以便在需要时获取最新数据。因此,如果无法实现上述方案,那将是一个解决方案。
答案 0 :(得分:2)
你可以把桌子联合起来。
对于MySQL(不允许子查询):
(SELECT 'Table_1' as tablename, id, date FROM Table_1
WHERE date BETWEEN TO_DATE('20120126', 'YYYYMMDD') AND TO_DATE('20120201', 'YYYYMMDD'))
UNION
(SELECT 'Table_2' as tablename, id, date FROM Table_2
WHERE date BETWEEN TO_DATE('20120126', 'YYYYMMDD') AND TO_DATE('20120201', 'YYYYMMDD'))
ORDER BY tablename, id, date
结果集将是:
tablename id date
--------- -- -----------
Table_1 1 2012-01-27
Table_2 2 2012-01-31
Table_1 2 2012-02-01
答案 1 :(得分:1)
SELECT src_table, id, the_date
FROM (SELECT 'TABLE_1' AS src_table, id, the_date
FROM table_1
WHERE the_date BETWEEN TO_DATE('2012-01-26', 'YYYY-MM-DD')
AND TO_DATE('2012-02-01', 'YYYY-MM-DD')
UNION
SELECT 'TABLE_2' AS src_table, id, the_date
FROM table_2
WHERE the_date BETWEEN TO_DATE('2012-01-26', 'YYYY-MM-DD')
AND TO_DATE('2012-02-01', 'YYYY-MM-DD')
)
ORDER BY the_date DESC, id, src_table
用SYSDATE-7或任何合适的
替换您的日期