tabla
Código:
Breve descripcion.movimientos descripcion |--------------------------| |--------------------------| | id | total | flag | code | | code | nombre | peso | |--------------------------| |--------------------------| | 1 | 10 | 1 | 5 | | 5 | articulo_1 | 20 | |--------------------------| |--------------------------| | 2 | 20 | 1 | 5 | | 6 | articulo_2 | 30 | |--------------------------| |--------------------------| | 3 | 10 | 1 | 5 | |--------------------------| ordenes | 4 | 40 | 0 | 5 | |---------------------------------| | -------------------------| | id | orden | date | code | | 5 | 10 | 1 | 6 | |--------------------------|------| |--------------------------| | 1 | 23 | 2012-10-10 | 5 | | 6 | 10 | 1 | 6 | |--------------------------|------| |--------------------------| | 2 | 74 | 2011-08-23 | 6 | | 7 | 10 | 1 | 6 | |--------------------------|------| |--------------------------| | 8 | 80 | 0 | 6 | |--------------------------|
Tabla movimientos: Movimientos de ordenes
Tabla descripcion: Datos de los articulos
Tabla ordenes: la ordenes
Dentro de movimiento esta con el Flag = 1 los articulos ke se movieron para esa orden identificada por code
Con flag 0 cantidad de elemtos ke se fueron en esa orden NO es igual a la suma de los articulos para esa orden
Mi meta es obtener:
1- Totales sumados cuando sean el mismo Code y el FLAG = 1 en la tabla movimientos
2- Compararlo con el Total cuando sea el mismo Code pero con Flag = 0 multiplicado por el peso en la tabla descripcion
3- Diferencia de la Comparacion
mi pregunta es: Este query ke he creado es optimo para este escenario a existe una mejor opcion ke me puedan brindar
Código:
Este query me devuelve el valor perfecto pero mi duda es si esta linea esta bien construida bajo un concepto optimoSELECT D.code AS Codigo_Producto, D.nombre AS Descripcion_Producto, D.peso AS Peso_Producto, O.date AS Orden_Fecha, O.orden AS Orden_Codigo, SUM(M.total) AS Peso_Movido, ( M2.total * D.peso ) AS Peso_Vendido, ( M2.total * D.peso ) - SUM( M.total ) Diferencia FROM descripcion D INNER JOIN moviminetos M ON D.code = M.code INNER JOIN moviminetos M2 ON D.code = M2.code INNER JOIN ordenes O ON M.code = O.code WHERE M.flag = 1 M2.flag = 0 GROUP BY M.code, M.flag, D.nombre, D.peso, O.date, O.orden
INNER JOIN moviminetos M ON D.code = M.code
INNER JOIN moviminetos M2 ON D.code = M2.code
para poder diferenciar un flag = 1 y el otro = 0
Muchas Gracias