Join возвращает четыре строки вместо двух строк в mysql?
Мне нужно присоединиться к трем столам
1) Таблица:: Партии:
batch_no процесс далее
1 резка 1
1 забиваем 2
2 резка 1
2 долбят 2
2)Таблица:: Резка
Бно резки переделки
170902 1000 20
170902 400 80
3)Таблица:: Забивание Молотком
BNO loadqty молотковая переделка
170902 1000 0 0
170902 500 0 0
Это моя хранимая процедура для повторного выполнения вывода:
CREATE DEFINER=`SKP`@`%` PROCEDURE `Ham`(in batch varchar(100)) BEGIN declare oseq int; declare gseq int; declare proc varchar(30); set @oseq=(select seq from batches where batch_no=batch and `process`='Hammering'); set @gseq=@oseq-1; set @proc=(select `process` from batches where batch_no=batch and seq=@gseq); if(@proc='Cutting') then select b.esize,b.planned_qty,(ifnull(sum((c.cutting+c.rework)),0)-ifnull(h.loadqty,0)) as `In`,ifnull(sum(h.hammering+h.rework),0) as `Out` from batches as b left join cutting as c on c.bno=b.batch_no left join hammering as h on h.bno=b.batch_no where b.batch_no=batch and b.`process`='Hammering'; end if; END
Описанная выше процедура возвращает четыре строки вместо двух.
Пример Вывода
позвоните Хэму('1');
Выход:
esize Planned In Out '9.000 X 9.000 BPM', '1500', '2000', '0' The above result is calculation of 4 rows
Результат должен быть
esize Planned In Out '9.000 X 9.000 BPM', '1500', '0', '0'
Что я уже пробовал:
Для объяснения приведенного выше кода:
1) партии не имеет более одного. условие-это процесс (уникальный)
2) резка имеет Бно более одного.
3) долбят не имеет более одного.
Поискал в google и обнаружил, что это проблема дублирования данных, но я не нашел решения.