【发布时间】:2018-03-26 21:15:11
【问题描述】:
我有一个包含一百多个表的数据库,其中包含来自多个站点的天气记录,每个表都是不相关的,但都有几个具有相同数据集的共享列名(例如,每天的最高温度)。我无法加入这些表,因为每个表中只有几个列名是一致的(这些是我想要使用的)。
我希望能够在所有表中搜索模式和值(例如,SELECT stationName, date FROM multipleTables where maxTemp > 30),这应该在满足条件的每个表中返回站点名称和日期。
每个表的结构大致如下:
站名 |日期|最高温度 |最低温度 |等等
我是使用 SQL 和数据库的新手,所以我真的不知道该怎么做。我已经尝试将数据合并到一个表中,但它很快就变得混乱了。我也尝试过使用 union 和 joins 但没有成功。
我将 mariaDB 与 phpmyadmin 一起使用,我的原始数据在 csv 文件中
【问题讨论】:
-
可能是时候建议将其投入 Hadoop 并让 NoSQL 大放异彩了。一张桌子要好得多,但是您可以通过视图和一堆废话来模仿它。好奇是否有更清洁的解决方案,但我的经验表明,您需要进行大量手动工作映射,例如每次一个表之间的列并将其合并。(不要加入,使用联合。选择“table1”作为tablename, columns_desired from table 1 union select 'table2' as tablename, columns_desired .... 等等。我喜欢留下 'tablename' 列来帮助确定该记录来自哪个表)
-
@Twelfth "union 而不是 join" 可能足以得到一个可靠的答案。
-
“我也尝试过使用 union ...” - 请使用 UNION 发布您的尝试。
-
只需一个一个地做,然后用你的结果建立一个新表。
-
谢谢,我会看看 Hadoop 和 NoSQL,我对 Firebase 有一点经验,但对 NoSQL 不太了解。我遇到的联合问题是每个表都有不同数量的列,有些表的数据我希望可以查询,而其他表没有,所以它变得非常混乱和混乱,认为它仍然可能我的选择虽然它只是非常乏味和耗时。