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

consulta no muestra lo esperado

Estas en el tema de consulta no muestra lo esperado en el foro de Mysql en Foros del Web. necesito recuperar el total de los campos cantidad de los distintos codigo where el precio no sea null, esta seria la tabla: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 11/02/2016, 16:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
consulta no muestra lo esperado

necesito recuperar el total de los campos cantidad de los distintos codigo where el precio no sea null, esta seria la tabla:

Código MySQL:
Ver original
  1. +---------------------+--------+--------+--------+-----------------+
  2. | fecha               | codigo | cantidad| stock| precio       |
  3. +---------------------+--------+--------+--------+-----------------+
  4. | 2016-02-11 11:00:00 |    a222| 4| 3   | 20       |
  5. | 2016-02-11 11:00:00 |    d234 | 2   | 1 | 10 |
  6. | 2016-03-01 10:00:00 |    d234| 2| 12   | 5       |
  7. +---------------------+--------+--------+--------+-----------------+
  8.  
  9.  
  10.  
  11.     DISTINCT codigo AS codigos,
  12.     SUM(IF(precio is not null,cantidad,0))AS total_cantidad
  13. FROM tabla;

me tendria que mostrar algo asi:



Código MySQL:
Ver original
  1. +---------------------+-----------------+
  2. | codigo               |total    |
  3. +---------------------+-----------------+
  4. | a222                 | 4       |
  5. | d234                 | 4|
  6. +---------------------+-----------------+

pero solo me marca un codigo, quizas tube algun error de sintaxis ya que esta hecho a mano.
saludos.
  #2 (permalink)  
Antiguo 11/02/2016, 18:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta no muestra lo esperado

Partamos de algunos detalles básicos: SUM(), al igual que cualquier función de agregación como MIN(), MAX(), AVG() e incluso COUNT(), no realizan operaciones con NULL, por lo que todo ese IF() que pones es irrelevante. No hace NADA, porque NULL no es un dato, y en consecuencia no se pueden hacer operaciones aritméticas con él.
Además, si vas a SUMAR el contenido de cada registro, diferenciando los códigos,eso requiere un GROUP BY... que no estás poniendo.
Empecemos probando esto:
Código MySQL:
Ver original
  1.     codigo codigos,
  2.     SUM(precio) total_cantidad
  3. FROM tabla
  4. GROUP BY codigo;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, fecha, muestra, 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 01:08.