Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/12/2013, 12:31
bendark23
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: que hacer cuando Count(*) No funciona como esperamos?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Porque el SQL no puede devolver el dato que no existe, cuando no está representado en ninguna tabla. Así de sencillo.
El SQL trabaja con los datos registrados en la tabla en forma real. No puede darte, tomados sólo de esa tabla, un valor cero (0), porque no tiene cómo encontrarlo.
Distinto sería se tienes una tabla donde aparezca la lista de sitios, entonces la cosa se simplifica:

Código MySQL:
Ver original
  1. SELECT S.site_id, E.evento, COUNT(*) Subtotal
  2. FROM sitios S LEFT JOIN abortos_server E ON S.site_id = E.site_id
  3.     (YEAR(E.evento) = ".$anos." AND E.semana = " . $semana)
  4.    OR E.site_id IS NULL
  5. GROUP BY  S.site_id


Muchas gracias por tu respuesta te comento que si tengo una tabla sitios y se podria hacer tu consulta como me la mandas pero no me da el resultado deseado.

es decir mira.. en el año hay 52 semanas, en cada semana puedo o no haber el evento aborto.

quiero hacer una consulta que me traiga los valores de cada sitio, de las 52 semanas si hubo o abortos.

es decir.

si hago la consulta de esta manera( y funcionara)

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos. Leer las normas, por favor.
Código MySQL:
Ver original
  1. SELECT evento,COUNT(*) FROM abortos_server
  2. WHERE site_id = 20 and YEAR(evento) = 2013
el resultado deseado seria listando todas las semanas incluyendo valores 0
Código:
sitio | evento | abortos | semana
------------------------------------------
20    | aqui la fecha | 0 | 1
20 | ---| 1 |2
20 | --- | 0 | 3
20 | --- | 1 |4
20 | --- | 0 | 5
20 | ---  | 0 | 6
entiendo que mysql no puede inventar datos que no existen, gracias sigo aprendiendo.. pero cual seria o como seria la consulta para que me arrojara ese resultado.

Última edición por gnzsoloyo; 17/12/2013 a las 12:49