首页 > 解决方案 > 如何在 mysql 中合并 -all- 表?

问题描述

我希望为 100 个城市创建一个关于 GDP、人口、CPI 等的数据库。此外,用户可以在 HTML 中提交他需要的变量。目标 1:最终用户可能会询问 2017 年所有 100 个城市的 GDP、pop、CPI。目标 2:最终用户询问 city_1 在 2000-2017 年(整个期间)的 GDP、pop、CPI...。我决定为每个城市创建一张表。在城市中,年份、GDP、pop、cpi 有几个字段......因此,可以通过以下方式实现目标 2:我可以从最终用户输入的框中收集值,即:category{all, GDP, pop}, city{all, city_1, city_2}, time{all, 2017, 2016,...}.

$query="SELECT * FROM $query where year=$time";     
$qry_result=$mysqli->query($query);  

但是,我不确定如何显示目标 1。由于可能有数百到数千个城市,因此列出所有表格似乎不是正确的方法。我以为我需要一些代码,例如

SELECT * FROM (SHOW TABLES) FROM $year=$time;

显然这段代码不能工作。所以,我认为合并可能会奏效。例如,如果我可以合并所有表或合并所有带有year="value from user"的表,问题就解决了。但是,因为有这么多城市,我不确定这是否是一一键入所有合并命令的唯一方法,难道没有任何代码可以在一个数据库中“合并所有”吗?如果您可以帮助我处理合并部分甚至如何构建数据库,请多谢转发。

标签: phpmysqldatabase

解决方案


您的数据应该在一个表中,看起来像这样:

桌子cities

| city    | year | gdp | population | CPI |
-------------------------------------------
| London  | 2016 | 1.0 | XXY        | XXX |
| London  | 2017 | 1.0 | XXY        | XXX |
| London  | 2018 | 1.1 | XXZ        | XXX |
| Paris   | 2018 | 1.1 | XXZ        | XXX |

使用类似的查询:

SELECT gdp FROM cities WHERE city = 'London' AND year = 2016;
// Get GDP for London in 2016

SELECT * FROM cities WHERE city = 'London' AND year BETWEEN 2016 AND 2018;
// Get all data for London for years 2016-2018

推荐阅读