Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/11/2009, 18:07
Hypocrisy
 
Fecha de Ingreso: noviembre-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema query

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código SQL:
Ver original
  1. SELECT r.nom_rest, COUNT(*) AS num_empl_per_restaurant
  2. FROM restaurants r LEFT JOIN empl_rest t ON (r.codi_rest=t.codi_rest)
  3. WHERE r.nom_rest IS NOT NULL
  4. GROUP BY t.codi_rest;
No te olvides que para que se cuente cero (0) debes obtener los registros en NULL, que son los que te darán cero.
Como NULL no lo puede contar, devolverá cero en ese caso.
Otro detalle sería que si el código de restaurant es siempre único, agrupar por nombre es superfluo.

eso lo tenia hecho ya...pero el problema que tengo es que todos aquellos restaurantes que no tengan restaurantes salga 0...pero en vez de salir 0 sale 1...
He hecho una case para que todos los que sean null..sean 0... pero sale asi:
Como hago para que en la columna Emple cambien los 1 por 0? Se puede introducir un count(*) dentro de un case? Lo he probado pero es imposible.
kiero hacer algo como:
case when t.codi_rest is null then 0 else count(*) end...pero nada

Restaurante .......................Emple Emple
Shangai..................................1........ 0
La Dolce Vita...........................1........0
Restaurant Buenos Aires ........1
El Bulli.....................................3
Restaurant Pekin....................3
Sant Pau.................................1........0
La bella trattoria.....................2
Fiore.......................................1..... ...0
La Gran Muralla.......................1
Sakura.....................................1
Can Fabes...............................1.......0
La patagonia...........................1
Codigo:
Código:
SELECT r.nom_rest, COUNT(*) AS num_empl_per_restaurant, case
when t.codi_rest is NULL then 0
end  
FROM restaurants r LEFT JOIN empl_rest t ON (r.codi_rest=t.codi_rest)
WHERE r.nom_rest IS NOT NULL
GROUP BY t.codi_rest,r.nom_rest;
Como hago para que en la columna Emple cambien los 1 por 0? Se puede introducir un count(*) dentro de un case?

Quiero hacer algo como:
case when t.codi_Rest is null then 0 else count(*) end...pero no sale