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