MySQL - строки в столбцы без объявления имени значения поля - PullRequest
0 голосов
/ 02 октября 2018

В этом потоке было предусмотрено решение: MySQL - строки в столбцы .Все же я чувствовал, что это не динамично.Я имею в виду, что если люди добавят новое значение поля, которое не было объявлено?Таким образом, разработчик должен изменить запрос снова, чтобы он работал?Я не хочу что-то подобное.Я хочу, чтобы запрос продолжался, даже когда есть много дополнительных значений поля.Ниже приведена одна из процедур, представленных в качестве ответа.

 create view history_extended as (
  select
    history.*,
    case when itemname = "A" then itemvalue end as A,
    case when itemname = "B" then itemvalue end as B,
    case when itemname = "C" then itemvalue end as C
  from history
);

select * from history_extended;

+--------+----------+-----------+------+------+------+
| hostid | itemname | itemvalue | A    | B    | C    |
+--------+----------+-----------+------+------+------+
|      1 | A        |        10 |   10 | NULL | NULL |
|      1 | B        |         3 | NULL |    3 | NULL |
|      2 | A        |         9 |    9 | NULL | NULL |
|      2 | C        |        40 | NULL | NULL |   40 |
+--------+----------+-----------+------+------+------+

Допустим, добавлено новое значение - "D".Основным решением для выбора значений D в запросе является изменение запроса и добавление строки: case when itemname = "D" then itemvalue end as D.А если еще одна ценность была добавлена?Это никогда не закончится.Мне нужно что-то вроде этого:

SELECT CASE WHEN itemname IS anything THEN itemvalue END AS anything FROM history;

Как сделать запрос, который сделает это возможным?Пожалуйста помоги.Спасибо!

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