Я хочу создать базу данных о ВВП, населении, ИПЦ и т.д. Для 100 городов. Кроме того, пользователь может представить в HTML переменные, которые ему нужны. Цель 1: конечный пользователь может запросить ВВП, поп, индекс потребительских цен для всех 100 городов в 2017 году. Цель 2: конечный пользователь запрашивает ВВП, pop, CPI... для city_1 в 2000-2017 годах (весь период). Я решил создать по 1 таблице для каждого города. В городе есть несколько полей за год, ВВП, поп, 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;
Очевидно, что этот код не может работать. Итак, я думаю, что слияние может работать. Например, если я могу объединить все таблицы или объединить все таблицы с годом = "значение от пользователя", проблема будет решена. Однако, поскольку существует так много городов, я не уверен, что единственный способ набирать все команды слияния один за другим, нет ли какого-либо кода для "слияния ALL" в одной базе данных? Спасибо, если вы можете помочь мне с частью слияния или даже как структурировать базу данных.
Ваши данные должны быть в одной таблице и выглядеть примерно так:
Столовые 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