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

Duda join + group

Estas en el tema de Duda join + group en el foro de SQL Server en Foros del Web. Hola. Tengo la siguiente consulta: estos trabajando con estas tablas CYN_PRODUCTO PRI KEY Codigo int Descripcion varchar(50) PrecioDeCompra decimal(6, 2) PrecioDeVenta decimal(6, 2) CYN_FACTURAS_DETALLE Codigo ...
  #1 (permalink)  
Antiguo 13/07/2012, 13:05
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Duda join + group

Hola. Tengo la siguiente consulta:

estos trabajando con estas tablas
CYN_PRODUCTO
PRI KEY Codigo int
Descripcion varchar(50)
PrecioDeCompra decimal(6, 2)
PrecioDeVenta decimal(6, 2)
CYN_FACTURAS_DETALLE
Codigo producto int es el codigo de producto, un FK a PRODUCTO
Cantidad smallint
[Precio Venta] decimal(6, 2)
NumeroFactura int es el numero de factura que le corresponde al detalle, es un FK a FACTURA
CYN_CLIENTES
Apellido varchar(50) Unchecked
PRI KEY Documento int Unchecked
Nombre varchar(50) Unchecked
CYN_FACTURA
Tipo char(1)
PRI Key Numero factura int
[Fecha de Emision] date
Cliente int es el documento del cliente (un FK a cliente)

y la consigna es : "Listar por cada cliente, la cantidad vendida de cada producto ".

No logro agrupar correctamente, o no se si es que deberia hacerlo con una subconsulta. La idea es que quede una tabla con el el nombre de cada cliente y el la cantidad de cada producto que compraron.

Agrego el pedazo de codigo con el que estuve trabajando, agradezco cualquier ayuda.
SELECT [Tipo Doc]
,[CYN_CLIENTE].[Documento]
,[CYN_CLIENTE].[Apellido]
,[CYN_CLIENTE].[Nombre]
,[CYN_PRODUCTO].[Codigo]
,[CYN_PRODUCTO].[Descripcion]
,[CYN_FACTURAS_DETALLE].[Cantidad]
,[CYN_FACTURAS].[numero]

FROM [Capacitacion].[dbo].[CYN_CLIENTES]

JOIN [Capacitacion].[dbo].[CYN_FACTURAS]
ON [Capacitacion].[dbo].[CYN_FACTURAS].[Cliente] = [Capacitacion].[dbo].[CYN_CLIENTES].[Documento]
JOIN [Capacitacion].[dbo].[CYN_FACTURAS_DETALLE]
ON [CYN_FACTURAS_DETALLE].[Numero] = [CYN_FACTURAS].[Numero]

JOIN [Capacitacion].[dbo].[CYN_PRODUCTO]

ON [CYN_PRODUCTO].[Codigo]= [CYN_FACTURAS_DETALLE].[Codigo]

GROUP BY [CYN_PRODUCTO].[Codigo]

,[Documento]
,[Apellido]
,[Nombre]

,[CYN_PRODUCTO].[Descripcion]
,[CYN_FACTURAS].[numero]

,[CYN_FACTURAS_DETALLE].[Cantidad]





ORDER BY SUM([CYN_FACTURAS_DETALLE].[Cantidad]) ASC
  #2 (permalink)  
Antiguo 13/07/2012, 14:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda join + group

Yo haria una SUB-CONSULTA para sacar el TOTAL VENDIDO de la tabla DETALLE FACTURA.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 14/07/2012, 08:53
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Duda join + group

Tecnicamente- cada expresion que aperece en la clausula Select
debe aparecer tambien en la clausula Group By
de lo contrario debe ser una función de agregado.

Por ejemplo- [Tipo Doc] aparece en el Select y no en el Group By.
Debes añadirlo al Group By o poner lo dentro de una función de agregado: Sum([Tipo Doc]) o Max([Tipo Doc]) etcetera.
  #4 (permalink)  
Antiguo 16/07/2012, 06:30
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda join + group

Cita:
Iniciado por iislas Ver Mensaje
Yo haria una SUB-CONSULTA para sacar el TOTAL VENDIDO de la tabla DETALLE FACTURA.
recuerdo haber intentando una subconsulta sin exito. ¿Como la harias? (aunque sea en pseudo codigo)
  #5 (permalink)  
Antiguo 16/07/2012, 08:48
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda join + group

Como quieres sacar el TOTAL DE VENTAS por CLIENTE, entonces hay que atacar la tabla que tiene las ventas

CYN_FACTURAS_DETALLE
Codigo producto int es el codigo de producto, un FK a PRODUCTO
Cantidad smallint

SELECT PRODUCTO, SUM(Cantidad) FROM CYN_FACTURAS_DETALLE GROUP BY PRODUCTO

Con esto obtienes la venta total por producto, ahora bien, como en CYN_FACTURAS_DETALLE, no tienes el cliente, debes unirla con en ENCABEZADO y de ahi, es "planchar y coser"...
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 17/07/2012, 09:43
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda join + group

gracias por la respuesta, lo he solucionado de otra manera.

para quien le interese y pueda ser util, una alternativa:

SELECT

SUM([CYN_FACTURAS_DETALLE].[Cantidad])

/* joins y resto de los campos*/

GROUP BY

,[Documento]
,[Apellido]
,[Nombre]
,[Codigo]
,[CYN_PRODUCTO].[Descripcion]

/*tuve el cuidado de sacar el numero de factura */

ORDER BY SUM([CYN_FACTURAS_DETALLE].[Cantidad]) ASC


gracias a los que colaboraron a esta noble causa jeje.
  #7 (permalink)  
Antiguo 17/07/2012, 09:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda join + group

cfernandez

¿Que difiere de lo sugerido por mi?
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 17/07/2012, 10:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda join + group

Cita:
Iniciado por iislas Ver Mensaje
cfernandez

¿Que difiere de lo sugerido por mi?
Que usted Amigo nada mas uso un select from, no dijo que podia usar select from join jejejeje
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 17/07/2012, 12:16
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda join + group

haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaa, no pues si............por eso puse: y de ahi, es "planchar y coser"...
__________________
MCTS Isaias Islas

Etiquetas: server
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:48.