Как мне объединить все таблицы в MySQL?

0

Я хочу создать базу данных о ВВП, населении, ИПЦ и т.д. Для 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" в одной базе данных? Спасибо, если вы можете помочь мне с частью слияния или даже как структурировать базу данных.

  • 1
    Я решил создать 1 таблицу для каждого города, я думаю, что это неправильное решение. Создайте единую таблицу со всеми городами
  • 0
    Но как бороться с годами? Например, пользователь запрашивает ВВП для города за последние 50 лет, мне все равно нужно объединить 50 лет ....
Показать ещё 2 комментария
Теги:
database

1 ответ

0
Лучший ответ

Ваши данные должны быть в одной таблице и выглядеть примерно так:

Столовые 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
  • 0
    Да! спасибо, это лучший способ!
  • 0
    А для других людей, которым нужно выбрать все периоды или все города, вы можете использовать год = год, город = город
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню