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

sumar si distinct id

Estas en el tema de sumar si distinct id en el foro de Mysql en Foros del Web. Hola genta buenas tardes.. estoy.. renegando con esta consulta.. desde hoy temprano.. explico.. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT itp_id , ped_id , ped_numero ...
  #1 (permalink)  
Antiguo 15/04/2014, 12:21
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
sumar si distinct id

Hola genta buenas tardes.. estoy.. renegando con esta consulta.. desde hoy temprano..

explico..

Código MySQL:
Ver original
  1. itp_id,
  2. ped_id,
  3. ped_numero,
  4. itp_ped,
  5. itp_prod,
  6. itp_totalcf,
  7. sum(itp_totalcf) as totalCF,
  8. itp_totalnf,
  9. ped_vendedor,
  10. doc_id,
  11. doc_ped,
  12. doc_tipo,
  13. doc_ftipo,
  14. doc_numero,
  15. doc_fecha,
  16. doc_pdv,
  17. doc_cat,
  18. doc_dto,
  19. doc_iva,
  20. doc_estado,
  21. doc_estadopago,
  22. doc_codeunix,
  23. itp_cant,
  24. itp_cantcf,
  25. itp_cantnf
  26.  
  27. FROM  `items_pedidos`  inner join pedidos on itp_ped=ped_id
  28. inner join documentos on ped_id=doc_ped
  29. (doc_tipo=1 OR doc_tipo=2 OR doc_tipo=4)
  30. and year(doc_fecha)='2014' and month(doc_fecha)='03'
  31. and doc_estado=0
  32. AND (itp_prod = 'BIRO0150' OR itp_prod = 'BIRO0200' OR itp_prod = 'BIRO0300')
  33. group by itp_id,month(doc_fecha)
  34. ORDER BY doc_fecha ASC, doc_numero asc, doc_tipo asc


aqui tengo tres tablas... items_pedidos, documentos, pedidos.

necesito sacar las sumas de los items de los pedidos. de un mes del año.. siempre que el documento tenga como estado 0 y como tipo 1, 2 o 3

la tabla items_pedidos se relaciona con la factura( documentos) por medio del pedido..

el problema es que se me preduce un producto cartesiano.. y al sumar me duplica los valores.

como ven en la imagen totalCF me da el doble.. y bueno ademas necesito mostrar todo en un solo registro.. como en la imagen



ahi si ven totalCF da 7640 pero debe dar casi la mitad...

pongo.. la imagen de como me da el producto cartesiano.



y si agrupo. por itp_id ahi se reduce el producto cartesiano pero la suma es lo mismo



como se ve aca... me tendria que dar 4390 y me da 7640 que es lo que da en la primer imagen.


desde ya agradezco mucho cualquier aporte

Última edición por gnzsoloyo; 16/04/2014 a las 08:04
  #2 (permalink)  
Antiguo 15/04/2014, 14:49
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: sumar si distinct id

Estoy un poco cansado ya es tarde por aquí !

Mañana me lo miro con mimo pero por lo pronto yo haría algo como :

Código MySQL:
Ver original
  1. SELECT SUM(items) FROM ( SELECT items FROM tabla WHERE estado = 0 AND YEAR(doc_fecha)='2014' AND tipo = 1 OR tipo = 2 OR tipo =3)t
  #3 (permalink)  
Antiguo 15/04/2014, 15:56
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: sumar si distinct id

Ok lo voy a probar... agradezco mucho tu tiempo
  #4 (permalink)  
Antiguo 16/04/2014, 07:57
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: sumar si distinct id

hola.. Djoaq te cuento.. lo testee.. pero.. como el estado de la factura (anulada, activa) esta en la tabla documentos.. y para ligar el item al documento tengo que pasar por el pedido.. me pasa lo mismo me genera otra vez el duplicado.. o bien el producto cartesianio.
  #5 (permalink)  
Antiguo 19/04/2014, 05:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: sumar si distinct id

Aunque no sé a qué tablas pertenecen los campos y me gustaría saberlo, ¿qué ocurre si lanzas esta consulta?
Código MySQL:
Ver original
  1. itp_id,
  2. SUM(itp_totalcf) totalCF
  3. FROM  items_pedidos  INNER JOIN pedidos on itp_ped=ped_id
  4. INNER JOIN documentos on ped_id=doc_ped
  5. WHERE doc_tipo IN (1,2,4)
  6. AND YEAR(doc_fecha)='2014' AND MONTH(doc_fecha)='03'
  7. AND doc_estado=0
  8. AND itp_prod IN ('BIRO0150',  'BIRO0200', 'BIRO0300')
  9. GROUP BY itp_id, YEAR(doc_fecha), MONTH(doc_fecha)

Última edición por jurena; 19/04/2014 a las 07:27

Etiquetas: distinct, join, registro, 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 19:15.