внутреннее объединение выберите результаты с таблицей - PullRequest
1 голос
/ 19 марта 2019

Как объединить выбранные результаты с другой таблицей?

Пример: создать таблицу агрегированных значений для каждого типа продукта с двумя столбцами

SELECT product_type, SUM(value) AS total from table1
WHERE something_something_is_true
GROUP BY product_type;

Другая таблица с именем table2 содержит текстовые описания типов продуктов

product_type | description | more columns
---------------------------------------
1            | ....................
2            | ....................

Как объединить столбец description с результатами выбора выше, чтобы полученная таблица выглядела примерно так?

product_type | total | description
---------------------------------
1            | 589   | stationary
2            | 234   | closing

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Вы можете использовать подзапрос как табличное выражение:

SELECT t1.product_type, total, description
FROM   (SELECT   product_type, SUM(value) AS total
        FROM     table1
        WHERE    something_something_is_true
        GROUP BY product_type) t1
JOIN   table2 t2 ON t1.product_type = t1.product_type
1 голос
/ 19 марта 2019

Используйте ваш запрос как производную таблицу, а затем присоедините к ней таблицу описания.

select t1.*, t2.description
from (
  SELECT product_type, SUM(value) AS total 
  from table1
  WHERE ...
  GROUP BY product_type
) t1 
  join table2 t2 on t1.product_type = t2.product_type
0 голосов
/ 19 марта 2019

Вы можете просто сделать:

SELECT t1.product_type, SUM(value) AS total,
       MAX(t2.description)
FROM table1 t1 LEFT JOIN
     table2 t2
     ON t2.product_type = t1.product_type
WHERE something_something_is_true
GROUP BY t1.product_type;
...