Объединить несколько таблиц и показать строку таблицы в виде столбца со значением в одной таблице - PullRequest
0 голосов
/ 11 июня 2018

У меня есть несколько таблиц, как это:

table

Я хочу получить результат, как на картинке, если я использую 'где table1.id = 1':

  • table2 - это значение магазина и ключ имени столбца

  • table3 - это имя столбца магазина, которое мне нужно показать

Результат должен быть

ID | Name | A | B | C
1  | a | 10 | 20 | 30

1 Ответ

0 голосов
/ 11 июня 2018

Вам нужно немного JOIN s с условным агрегацией:

select t1.id, t1.name, 
       sum(case when t3.name = 'a' then t2.value else 0 end) as A,
       sum(case when t3.name = 'b' then t2.value else 0 end) as B,
       sum(case when t3.name = 'c' then t2.value else 0 end) as C
from table1 t1 inner join 
     table2 t2
     on t2.table1_id = t1.id inner join
     table3 t3
     on t3.key_id = t2.key
where t1.id = 1
group by t1.id, t1.name;

Однако это будет делать агрегацию только с известными значениями до, если вы хотитеидти с динамическим путем, то вам может понадобиться подход к программированию в MySQL.

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