MySQL - Присоединение только добавляет строку агрегированных значений из исходной таблицы к каждой из выбранных строк в таблице хостов. - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть ситуация, которую я могу описать простым способом, как показано ниже.

В таблице A есть поля X, Y и Z.

Таблица B является справочной таблицей с полями P и Q.

Y предназначается для P в качестве внешней ссылки.

XY не устанавливается как уникальное, поскольку парные значения повторяются.

XYZ обычно различны, но Z - только текст в типе, поэтому он не индексируется.

В запросе select из таблицы A я хочу добавить к каждой строке только на основе их значения Y, sum из всех значений Q. Но когда я делаю что-то вроде ниже, он показывает только одну строку для каждого отдельного значения XY.

select X, Z, sum(Q) from A where ___ join B on Y = P group by X, Y

Есть ли другой способ, которым я мог бы попробовать, прежде чем я рассмотрю добавление поля ID как последний вариант?

1 Ответ

0 голосов
/ 19 февраля 2020

Если вы выполните агрегацию из B в производной таблице, вы можете затем JOIN в таблицу A, чтобы получить сумму на каждой строке A:

SELECT A.*, B.Q
FROM A
JOIN (SELECT P, SUM(Q) AS Q
      FROM B
      GROUP BY P) B ON B.P = A.Y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...