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

Select con NULL

Estas en el tema de Select con NULL en el foro de Mysql en Foros del Web. Buenas Noches: Estoy haciendo esta SELECT y me encuentro que tengo que sumar las cantidades vendidas de la tabla de COMPRAS, pero cuando no hay ...
  #1 (permalink)  
Antiguo 14/05/2012, 16:48
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Select con NULL

Buenas Noches:

Estoy haciendo esta SELECT y me encuentro que tengo que sumar las cantidades vendidas de la tabla de COMPRAS, pero cuando no hay registros aparece NULL y me dificulta hacer la operación de resta para obtener los disponibles.

El sum( if(CO.cantidad is not null,CO.cantidad,0) NO FUNCIONA, no se si estoy haciendo algo mal

SELECT
P.*,
TP.destagen,
TP.destasec,
PA.nombre AS nompai,
PR.nombre nompro,
LC.nombre nomloc,
US.usuario codusu,
US.nombre nomusu,
TM.simbolo moneda,
TA.nombre nomtar,
(SELECT sum( if(CO.cantidad is not null,CO.cantidad,0) ) FROM compras CO WHERE CO.idpublicacion = P.idpublicacion) vendido,
(SELECT sum(if(TV.signo="+",CC.importe,if(TV.signo="-",CC.importe*-1,0))) FROM cuentacorriente CC INNER JOIN tipomovimientos TV on CC.idtipomovimiento=TV.idtipomovimiento WHERE CC.idusuario=P.idusuario) saldo
FROM
publicaciones P
INNER JOIN tipopublicaciones TP ON P.idtipopublicacion = TP.idtipopublicacion
INNER JOIN usuarios US ON P.idusuario = US.idusuario
INNER JOIN tipomonedas TM ON P.idtipomoneda = TM.idtipomoneda
INNER JOIN tipoarticulos TA ON P.idtipoarticulo = TA.idtipoarticulo
INNER JOIN paises PA ON P.idpais = PA.idpais
INNER JOIN provincias PR ON P.idprovincia = PR.idprovincia
INNER JOIN localidades LC ON P.idlocalidad = LC.idlocalidad
GROUP BY 1,2,3,4,5,6,7,8,9,10;

Les agradecería a alguien que pueda ayudarme
  #2 (permalink)  
Antiguo 15/05/2012, 01:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select con NULL

IFNULL(CO.cantidad,0)

http://dev.mysql.com/doc/refman/5.0/...unction_ifnull

No he mirado la query...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/05/2012, 14:47
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Select con NULL

Chicos, la verdad no se que pasa, me sigue dando como resultado en "vendido", null cuando tiene que ser 0, ahora el código quedo asi::

SELECT
P.*,
TP.destagen,
TP.destasec,
PA.nombre AS nompai,
PR.nombre nompro,
LC.nombre nomloc,
US.usuario codusu,
US.nombre nomusu,
TM.simbolo moneda,
TA.nombre nomtar,
(SELECT sum( IFNULL(cantidad,0) ) FROM compras CO WHERE CO.idpublicacion = P.idpublicacion) vendido,
(SELECT sum(if(TV.signo="+",CC.importe,if(TV.signo="-",CC.importe*-1,0))) FROM cuentacorriente CC INNER JOIN tipomovimientos TV on CC.idtipomovimiento=TV.idtipomovimiento WHERE CC.idusuario=P.idusuario) saldo
FROM
publicaciones P
INNER JOIN tipopublicaciones TP ON P.idtipopublicacion = TP.idtipopublicacion
INNER JOIN usuarios US ON P.idusuario = US.idusuario
INNER JOIN tipomonedas TM ON P.idtipomoneda = TM.idtipomoneda
INNER JOIN tipoarticulos TA ON P.idtipoarticulo = TA.idtipoarticulo
INNER JOIN paises PA ON P.idpais = PA.idpais
INNER JOIN provincias PR ON P.idprovincia = PR.idprovincia
INNER JOIN localidades LC ON P.idlocalidad = LC.idlocalidad
GROUP BY 1,2,3,4,5,6,7,8,9,10;

Agradecido si me dan una mano
  #4 (permalink)  
Antiguo 16/05/2012, 02:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select con NULL

...
IFNULL((SELECT sum(CO.cantidad) FROM compras CO WHERE CO.idpublicacion = P.idpublicacion),0) vendido,
...

Toda compra tendrá una cantidad pero quizas hay publicaciones que no se hayan comprado...


He seguido, sin intentar entender el resto de la query....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, null, registros, 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 14:10.