Php 如何在mysql中合并所有表?

Php 如何在mysql中合并所有表?,php,mysql,database,Php,Mysql,Database,我希望为100个城市建立一个关于GDP、人口、CPI等的数据库。此外,用户还可以在HTML中提交所需的变量。 目标1:最终用户可能要求2017年所有100个城市的GDP、pop和CPI。 目标2:最终用户要求GDP、pop、CPI。。。2000-2017年(整个期间)的城市1。 我决定为每个城市创建一个表。在城市中,有几个字段表示年份、GDP、pop、cpi。。。 因此,目标2可以通过以下方式实现:我可以从最终用户输入的框中收集值,即:category{all,GDP,pop},city{all

我希望为100个城市建立一个关于GDP、人口、CPI等的数据库。此外,用户还可以在HTML中提交所需的变量。 目标1:最终用户可能要求2017年所有100个城市的GDP、pop和CPI。 目标2:最终用户要求GDP、pop、CPI。。。2000-2017年(整个期间)的城市1。 我决定为每个城市创建一个表。在城市中,有几个字段表示年份、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”合并所有表,问题就解决了。 然而,因为有这么多的城市,我不确定这是否是一个接一个地键入所有合并命令的唯一方法,难道没有任何代码可以在一个数据库中“合并所有”吗?
如果您能帮助我了解合并部分,甚至如何构造数据库,请转发。

您的数据应位于单个表中,如下所示:

城市

| 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


我决定为每个城市创建一个表,我认为这是错误的决定。创建一个包含所有城市的表但是如何处理年份?例如,用户要求查询一个城市过去50年的GDP,我仍然需要合并50年……不,在使用从庞大结果集筛选的数据库时,您不需要“合并”任何内容。所以,在这里,您使用所有年份并指定一个筛选规则,以仅选择实际请求的年份。您的意思是像select*FROM year1,year2?对于需要选择所有时段或所有城市的其他人,可以使用year=year,city=city@user9821719如果您需要表中的所有数据,只需执行“SELECT*from tablename”;无需添加额外的条件,如“year=year”
SELECT * FROM cities WHERE city = 'London' AND year BETWEEN 2016 AND 2018;
// Get all data for London for years 2016-2018