У меня есть 3 таблицы:MYSQL - Выберите общую сумму 3 присоединился к таблице
таблица а => идентификатор, имя
Таблица B => идентификатор, id_a, количество
таблица с => идентификатор , id_a, amount
Как выбрать таблицу a и общую сумму из таблицы b и таблицы c?
Я уже пробовал:
SELECT a.`name`, SUM(b.`amount`) AS Total
FROM a
LEFT JOIN b ON a.`id` = b.`id_a`
UNION
SELECT a.`name`, SUM(c.`amount`) AS Total
FROM a
RIGHT JOIN c ON a.`id` = c.`id_a`
GROUP BY a.`id`
Но он показывает несколько записей из таблицы а где есть id_a значение как в таблице б и таблицы с.
FYI: если таблица a вставлена, то в таблицу b или таблицу c или обе таблицы b и таблицу c будут вставлены детали. Таким образом, нет никакой возможности таблицы а имеет ни одна деталь в таблице А или б
Вот пример данных
стол: с
id | name
1 | name 1
2 | name 2
стол б:
id | id_a | amount
1 | 1 | 300
2 | 1 | 200
таблица c:
id | id_a | amount
1 | 1 | 200
2 | 1 | 100
3 | 2 | 300
4 | 2 | 100
Предпочтительной Результат:
name | amount
name 1 | 800
name 2 | 400
ОБНОВЛЕНИЕ Ответом => Благодаря @Jens
SELECT d.NAME, SUM(d.Total) FROM (
SELECT a.id AS id , a.`name` AS NAME, SUM(b.`amount`) AS Total
FROM a
LEFT JOIN b ON a.`id` = b.`id_a`
GROUP BY a.`id`
UNION
SELECT a.`id` AS id, a.`name`, SUM(c.`amount`) AS Total
FROM a
RIGHT JOIN c ON a.`id` = c.`id_a`
GROUP BY a.`id`
) AS d
GROUP BY d.`id`
Другой ответ ОТ @Alex работает ТОО и проще Благодаря как для @Jens, так и для @Alex. Это меняю мои знания
вы 'группа by' работает только на последнем выберите .. – thebjorn
если я удалить его, он только получить первую запись таблицы А и общую сумму. Таким образом, он извлекает только 1 запись. Если я поместил его в оба запроса, он отобразит избыточную запись таблицы a, но с разным общим количеством таблицы b и таблицы c –
Каков ваш предпочтительный результат? можете ли вы объяснить дальше? – Edrich