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

Mezclar filas de dos consultas MYSQL

Estas en el tema de Mezclar filas de dos consultas MYSQL en el foro de Mysql en Foros del Web. Buenos días, no ha sido fácil explicar la duda de MYSQL que tengo, a ver si pudiesen ayudarme, espero que se pueda entender. Un saludo ...
  #1 (permalink)  
Antiguo 21/02/2015, 03:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 9 años, 5 meses
Puntos: 0
Mezclar filas de dos consultas MYSQL

Buenos días, no ha sido fácil explicar la duda de MYSQL que tengo, a ver si pudiesen ayudarme, espero que se pueda entender.

Un saludo y gracias.
--------------------------------------------

Duda:

Un cliente puede hacer dos tipos de compra diferente:

1) Con depósito: se "presta" el producto al cliente, haciendo un albarán de compra, se tiene un plazo de 45 días para vender el producto, sino se devuelve.

2) Depósito vendido: cuando el producto que se dejo en deposito, se vende y se hace entonces la factura oficial.

Lo ideal sería mostrar en una tabla lo siguiente:

Fila 1: datos de la venta con depósito, ordenado por cliente y producto.
Fila 2: datos de la venta depósito vendido, ordenado por cliente y producto.

Por ejemplo:

El cliente con id 1 hace una compra con deposito de dos productos.

El cliente con id 1 hace una compra de deposito vendido de 1 producto de los dos que se depositaron.

El resultado sería:

Cliente, Tipo de Venta, Producto, Cantidad, Precio, Total
1 1 Producto_1 2 14 28
1 2 Producto_1 1 14 14

Aquí lo que estamos diciendo es que del depósito de 2 productos que se hizo, el cliente ha vendido 1. Si hubiesen más ventas, se haría de la misma manera, mezclando las filas de lo depositado y lo vendido.

Ahora el ejemplo real de lo que yo tengo:

TABLA CLIENTES

id int(11)
compania varchar(50)

# id,compania
'1', compania_1
'2', compania_2

*Tabla donde guardamos los clientes

Tabla Productos: id, modelo, color, precio
id: 1
modelo: modelo_1
color: negro
precio: 12

id: 2
modelo: modelo_2
color: rojo
precio: 14

*Tabla donde guardamos los productos

Detalles_productos: id, productos_id, numero

id: 1
productos_id: 1
numero: 40

id: 1
productos_id: 1
numero: 41

id: 2
productos_id: 1
numero: 40

id: 2
productos_id: 1
numero: 41

*Tabla donde guardamos los detalles del producto, número o talla, etc.

Ventas: id, id_clientes, tipo

id: 1
id_clientes: 1
tipo: 1

id: 2
id_clientes: 1
tipo: 2

id: 3
id_clientes: 2
tipo: 1

id: 4
id_clientes: 2
tipo: 2

Detalles_ventas: id, id_ventas,cantidad_vendida,precio_producto

id: 1
id_ventas: 1
cantidad_vendida: 2
precio_producto: 12

id: 2
id_ventas: 1
cantidad_vendida: 2
precio_producto: 14

id: 3
id_ventas: 2
cantidad_vendida: 1
precio_producto: 12

id: 4
id_ventas: 2
cantidad_vendida: 2
precio_producto: 14

id: 5
id_ventas: 3
cantidad_vendida: 1
precio_producto: 12

id: 6
id_ventas: 3
cantidad_vendida: 1
precio_producto: 14

id: 7
id_ventas: 4
cantidad_vendida: 1
precio_producto: 12

id: 8
id_ventas: 4
cantidad_vendida: 1
precio_producto: 14

*Tabla donde guardamos los detalles de la venta, cantidades, precio, etc.

SELECT clientes.compania as 'COMPANIA',producto.modelo as 'MODELO',producto.color as 'COLOR',
sum(if(producto.numero=39,det_ventas.cantidad,0)) as '39',
sum(if(producto.numero=40,det_ventas.cantidad,0)) as '40',
sum(if(producto.numero=41,det_ventas.cantidad,0)) as '41',
sum(if(producto.numero=42,det_ventas.cantidad,0)) as '42',
sum(if(producto.numero=43,det_ventas.cantidad,0)) as '43',
sum(if(producto.numero=44,det_ventas.cantidad,0)) as '44',
sum(if(producto.numero=45,det_ventas.cantidad,0)) as '45',
sum(if(producto.numero=46,det_ventas.cantidad,0)) as '46',
sum(if(producto.numero=47,det_ventas.cantidad,0)) as '47',
sum(if(producto.numero=48,det_ventas.cantidad,0)) as '48',
sum(if(producto.numero=49,det_ventas.cantidad,0)) as '49',
sum(if(producto.numero=50,det_ventas.cantidad,0)) as '50',
sum(det_ventas.cantidad) as 'PARES',
det_ventas.precio_producto as 'PVP', round(sum(det_ventas.cantidad_vendida*det_ventas.p recio_producto),2) as 'TOTAL' FROM clientes
INNER JOIN ventas ON ventas.cliente_id=clientes.id
INNER JOIN detalles_ventas ON det_ventas.ventas_id=ventas.id
INNER JOIN detalles_productos ON det_productos.id=det_ventas.detalles_productos_id
INNER JOIN productos ON producto.id=det_productos.producto_id
WHERE ventas.tipo=1 GROUP BY clientes.compania,producto.modelo;

RESULTADO:

VENTA|TIPO_VENTA|COMPANIA|MODELO|COLOR|39|40|41|42 |43|44|45|46|PVP|TOTAL|
1 1 compania_1 modelo_1 negro 0 0 0 0 0 0 2 0 12 24
1 1 compania_1 modelo_2 rojo 0 0 0 0 0 0 2 0 14 28
2 2 compania_1 modelo_1 negro 0 0 0 0 0 0 2 0 12 24
2 2 compania_1 modelo_2 rojo 0 0 0 0 0 0 2 0 14 28
3 1 compania_2 modelo_1 negro 0 0 0 3 1 0 0 0 12 48
3 1 compania_2 modelo_2 rojo 0 0 0 1 2 0 0 0 14 42
4 2 compania_2 modelo_1 negro 0 0 0 3 0 0 0 0 12 36
4 2 compania_2 modelo_2 rojo 0 0 0 1 0 0 0 0 14 14

RESULTADO IDEAL:

VENTA|TIPO_VENTA|COMPANIA|MODELO|COLOR|39|40|41|42 |43|44|45|46|PVP|TOTAL|
1 1 compania_1 modelo_1 negro 0 0 0 0 0 0 2 0 12 24
2 2 compania_1 modelo_1 negro 0 0 0 0 0 0 2 0 12 24
1 1 compania_1 modelo_2 rojo 0 0 0 0 0 0 2 0 14 28
2 2 compania_1 modelo_2 rojo 0 0 0 0 0 0 2 0 14 28
3 1 compania_2 modelo_1 negro 0 0 0 3 1 0 0 0 12 48
4 2 compania_2 modelo_1 negro 0 0 0 3 0 0 0 0 12 36
3 1 compania_2 modeo_2 rojo 0 0 0 1 2 0 0 0 14 42
4 2 compania_2 mode2o_2 rojo 0 0 0 1 0 0 0 0 14 14

Última edición por guilens2; 21/02/2015 a las 07:00

Etiquetas: filas, mezclar, select, sql, 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 12:23.