Запрос MySQL с SELECT SUM() неправильно удваивает значение столбца из-за LEFT JOINPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Запрос MySQL с SELECT SUM() неправильно удваивает значение столбца из-за LEFT JOIN

Сообщение Anonymous »

Я пытаюсь получить общую сумму за месяц из двух таблиц. Вот мой запрос
SELECT
date_format(items.date, '%M %Y') as month,
COALESCE(SUM(items.amount), 0) as Rreceived,
COALESCE(SUM(issued_items.amount), 0) as Issued,
items.currency
FROM
items
LEFT JOIN
issued_items
ON date_format(items.date, '%Y-%m')=date_format(issued_items.date, '%Y-%m')
AND items.currency=issued_items.currency
GROUP BY
date_format(items.date, '%Y-%m')

Rreceived сумма должна быть 100, но я получаю 200. Можете ли вы помочь мне исправить запрос?
SQL FIDDLE
CREATE TABLE IF NOT EXISTS issued_items (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`purpose` varchar(255) NOT NULL,
`amount` decimal(25,2) NOT NULL,
`currency` varchar(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;

INSERT INTO issued_items (`id`,`date`,`purpose`,`amount`,`currency`) VALUES
(5, '2013-05-13', 'Test', 100.00, 'USD'),
(6, '2013-05-13', 'Test', 100.00, 'USD');

CREATE TABLE IF NOT EXISTS items (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`purpose` varchar(255) NOT NULL,
`currency` varchar(3) NOT NULL,
`amount` decimal(25,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2;

INSERT INTO items (`id`,`date`,`purpose`,`currency`,`amount`) VALUES
(1, '2013-05-13', 'Test', 'USD', 100.00);


Расширение логики требований:
Мне также необходимо представлять записи из Issued_items, даже если в таблице элементов нет записи за месяц-период.
Добавьте эту строку в Issued_items:
(7, '2013-07-01', 'Test', 100.00, 'USD')


Подробнее здесь: https://stackoverflow.com/questions/180 ... -of-left-j
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»