У меня есть сценарий, который работает идеально, но нужно добавить значения из другой таблицы текущего скриптаMySQL Группы по сложному сценарию
select v.id, vm.producto_id, sum(vm.total), count(v.id)
from visita v, reporte r, visitamaquina vm, maquina m,
(select r.id, empleado_id, fecha, cliente_id from ruta r, rutacliente rc where r.id=rc.ruta_id and
fecha>='2016-10-01' and fecha<='2016-10-30' group by fecha, cliente_id, empleado_id) as rem
where rem.fecha=v.fecha and v.cliente_Id=rem.cliente_id and r.visita_id=v.id and vm.visita_id=v.id and m.id=vm.maquina_id
group by vm.visita_id, vm.producto_id
Текущий скрипт возвращает это (мне нужно некоторые дополнительные столбцы, но для этого я оставить только те, с вопросами):
| Producto_Id | Id | Total | count(id) |
|---------------|--------------|-----------|-----------|
| 1 | 31 | 21 | 2 |
| 2 | 31 | 15 | 3 |
| 3 | 31 | 18 | 2 |
Таблица VisitaMaquina имеет несколько записей для одной producto_id VisitaMaquina имеет это:
| Producto_Id | Visita_Id | Total |
|---------------|--------------|-----------|
| 1 | 31 | 8 |
| 1 | 31 | 13 |
| 2 | 31 | 9 |
Такая же ситуация происходит с таблицей, называемой reporteproducto, где многократно повторяется producto_id.
Таблица reporteproducto имеет
| Producto_Id | Visita_Id | Quantity |
|---------------|--------------|-----------|
| 1 | 31 | 4 |
| 1 | 31 | 7 |
| 2 | 31 | 5 |
Мой предыдущий запрос работает нормально, и мне просто нужно, чтобы получить сумму количества
я использовал этот сценарий, и это то, что я получил
select v.id, vm.producto_id, sum(vm.total), sum(quantity), count(id)
from visita v, reporte r, visitamaquina vm, maquina m, reporteproducto rp,
(select r.id, empleado_id, fecha, cliente_id from ruta r, rutacliente rc where r.id=rc.ruta_id and
fecha>='2016-10-01' and fecha<='2016-10-30' group by fecha, cliente_id, empleado_id) as rem
where rem.fecha=v.fecha and v.cliente_Id=rem.cliente_id and r.visita_id=v.id and vm.visita_id=v.id and m.id=vm.maquina_id and rp.visita_Id=v.id and rp.producto_id=vm.producto_id
group by vm.visita_id, vm.producto_id
Я получил это
|Producto_Id | Visita_Id | Total |Quantity | count(id)
|---------------|--------------|-----------|-----------|-----------|
| 1 | 31 | 42 | 11 | 4 |
| 2 | 31 | 45 | 18 | 6 |
| 3 | 31 | 36 | 44 | 4 |
Нужный результат (фокус на producto_id = 1):
|Producto_Id | Visita_Id | Total |Quantity |
|---------------|--------------|-----------|-----------|
| 1 | 31 | 21 | 11 |
| 2 | 31 | 15 | 18 |
| 3 | 31 | 18 | 44 |
Любая идея о том, как решить эту проблему?
Это хороший вариант, только что visitamaquina и reporteproducto имеют более чем 1.000.000 записей, и мне нужно, чтобы добавить фильтр, основанный на другой таблице –
@GerardoAbdo еще не могу понять, почему 'total' удваивается и' количество' является правильным. – amow
Я использовал ваш предложенный сценарий и, кажется, лучший вариант с этого момента. большое спасибо –