mysql - 结合相同的信息。将多个表中的列数据放入 View 的一列中

标签 mysql sql database view

我有 2 个表。

TABLE_1 ( id, date, column_1 )
TABLE_2 ( id, date, column_1, column_2 )

id 和 date 对两个表都是通用的。我想做一个结合这两者的 View 。

VIEW_LATEST ( index, table_name, id, date)

在 View 中我需要一个索引来分别标识特定的行(不是必须的)。在那里,我将使用表名来标识特定行(id、日期)的详细信息从何处获取的事实。而且,我只需要获取特定时间段(例如上周)的信息。

例如。

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,因此 View 中未返回 TABLE_2 第一条记录。 按日期排序。

我需要完全按照上面提到的去做。我寻找类似这样的解决方案,但没有找到。

非常感谢任何实现上述情况的解决方案。此外,期望在向TABLE_1、TABLE_2插入数据时制作一个单独的格式为VIEW_LATEST的表来插入数据,以便在需要时获取最新的。因此,如果无法实现上述场景,这将是一种解决方案。

最佳答案

您可以将表联合在一起。

对于 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

关于mysql - 结合相同的信息。将多个表中的列数据放入 View 的一列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101422/

相关文章:

php - MySQL "IN"子句中的逗号分隔值

php - 不使用 WordPress 中的 dbDelta() 创建触发器

mysql - 不唯一/表别名 'respite'

c# - 循环插入问题,重新加载页面加载?

sql - TimescaleDB - 计数器

php - 检查两个id是否相同

mysql - 从 varchar 字段获取最大值

php - 无法连接到 mySQL 数据库

php - 在轻量级购物网站中数据库相对于 XML 的优势?

android - SQLite 从第 0 行第 1 列获取字段槽失败