Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda self join

Estas en el tema de Duda self join en el foro de Mysql en Foros del Web. Hola amigos, tengo el siguiente escenario. tabla Código: movimientos descripcion |--------------------------| |--------------------------| | id | total | flag | code | | code | nombre ...
  #1 (permalink)  
Antiguo 09/11/2012, 10:02
 
Fecha de Ingreso: junio-2011
Mensajes: 80
Antigüedad: 12 años, 10 meses
Puntos: 8
Duda self join

Hola amigos, tengo el siguiente escenario.

tabla

Código:
   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   |
|--------------------------|
Breve descripcion.
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:
SELECT 
   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
Este query me devuelve el valor perfecto pero mi duda es si esta linea esta bien construida bajo un concepto optimo

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

Última edición por goransh_pc; 09/11/2012 a las 10:12

Etiquetas: join, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:33.