Как мне присоединиться к нескольким таблицам, где некоторые, а не все столбцы одинаковы и вернуть сумму каждого столбца? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть несколько таблиц, которые отслеживают информацию из разных мест (т. Е. Холодно или тепло), которые предоставляют услуги в зависимости от сезона, и мне необходимо создать представление местоположений на корпоративном уровне.

Просмотр описаний дляUNIONS и JOINS, похоже, таблицы должны иметь одинаковое количество столбцов или одинаковое имя столбца. Мне нужен результат, предоставляющий сумму одинаковых столбцов и сумму уникальных столбцов с использованием PHP MySQL.

Table1
+-------+-------+-------+
| col-A | col-B | col-C |
+-------+-------+-------+
|   2   |    8  |   5   |
+-------+-------+-------+
|   1   |    9  |   7   |
+-------+-------+-------+
|   3   |    2  |   3   |
+-------+-------+-------+

Table2
+-------+-------+-------+
| col-1 | col-2 | col-3 |
+-------+-------+-------+
|   2   |    1  |   6   |
+-------+-------+-------+
|   5   |    5  |   4   |
+-------+-------+-------+
|   2   |    7  |   3   |
+-------+-------+-------+

Table3
+-------+-------+-------+-------+-------+-------+
| col-A | col-B | col-1 | col-2 | col-3 | col-4 |
+-------+-------+-------+-------+-------+-------+
|   9   |    4  |   1   |   2   |    1  |   4   |
+-------+-------+-------+-------+-------+-------+
|   2   |    6  |   6   |   8   |    3  |   6   |
+-------+-------+-------+-------+-------+-------+
|   4   |    7  |   3   |   2   |    4  |   5   |
+-------+-------+-------+-------+-------+-------+

Result Table
+-------+-------+-------+-------+-------+-------+-------+
| col-A | col-B | col-C | col-1 | col-2 | col-3 | col-4 |
+-------+-------+-------+-------+-------+-------+-------+
|   21  |   36  |   15  |   19  |   25  |   21  |   15  |
+-------+-------+-------+-------+-------+-------+-------+

1 Ответ

0 голосов
/ 04 октября 2019

Я думаю, что это можно сделать с помощью UNION, как показано ниже:

SELECT SUM(`col-A`) AS 'Col-A',SUM(`col-b`) AS 'Col-B',
       SUM(`col-C`) AS 'Col-C',SUM(`col-1`) AS 'Col-1',
       SUM(`col-2`) AS 'Col-2',SUM(`col-3`) AS 'Col-3',SUM(`col-4`) AS 'Col-4' 
  FROM
(SELECT `col-A`,`col-b`,0 AS 'col-c',`col-1`,`col-2`,`col-3`,`col-4` FROM table_3 UNION
SELECT 0,0,0,`col-1`,`col-2`,`col-3`,0 FROM table_2 UNION
SELECT `col-A`,`col-b`,`col-C`, 0,0,0,0 FROM table_1 ) XX

Поскольку в table_3 больше всего столбцов, я поставил его поверх объединения. Следующие запросы должны заполнить только 0 (ноль), если столбец отсутствует в таблице, чтобы выполнить требование объединения.

...