MySQL Crosstab или PHP Array?Каков наилучший способ преобразования содержимого конкретной таблицы? - PullRequest
0 голосов
/ 30 января 2019

У меня есть основная таблица данных и две таблицы, связанные с ней.Таблица данных содержит в строках информацию о странах с соответствующими годами и значениями, если они существуют.Это что-то вроде этого

variable_code | country_code | year_code | value
     1              291          73         28
     1              291          75         22
     1              443          74         12

Код года обозначает что-то вроде 1990, 1991, ...

Теперь я хотел бы иметь массив таблиц / PHP, такой как

country_code | 1990 | 1991 | 1992
     291        73      x     28
     443         x     12      x

SQL для поиска для одной переменной в виде

country_code | year_code | value
 Afghanistan     1990       28
 Afghanistan     1992       28
 Albania         1991       28

выглядит следующим образом:

SELECT
    country.country_name,
    time_id.year_start,
    data.data_value 
FROM
    data JOIN time_id ON data.time_ID = time_id.time_id
    JOIN country ON data.country_id = country.country_id 
WHERE
    data.Indicator_ID = '314' 
ORDER BY
    country.country_name,
    time_id.year_start

Доступное количество лет изменяется для каждогоиз возможных ~ 1000 переменных.

Я не могу создать ВИД, который мог бы помочь в этом процессе (не имеют привилегий).

Если не так легко создать в MySQL, может, лучше сделать это в PHP?Но это не похоже ни на простую процедуру.Сначала запрос «времени» для получения всех лет, а затем создание другого запроса с каждым годом ...?

Спасибо за любые подсказки ...

(Посмотрел здесь и здесь и ... но это не одно и то же.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...