Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2015, 03:17
guilens2
 
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