我希望创建一个关于100个城市的GDP、人口、CPI等的数据库。此外,用户还可以在 HTML 中提交他需要的变量。
目标1:最终用户可能会询问2017年所有100个城市的GDP、人口、CPI。
目标 2:最终用户询问 city_1 2000-2017 年(整个时期)的 GDP、人口、CPI...。
我决定为每个城市创建 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
和
SELECT * FROM cities WHERE city = 'London' AND year BETWEEN 2016 AND 2018;
// Get all data for London for years 2016-2018
关于php - 如何合并 mysql 中的所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50444114/