Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/02/2011, 09:20
Avatar de aniMAYtions
aniMAYtions
 
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
problema con recuento de registros

Hola amig@s.
Mi duda surge a la hora de contar los registros de una tabla agrupados por 2 campos y coincidentes con otras 2 tablas externas, contando también los que no tienen registros como 0.
Me explico mejor. Tengo una tabla 'servicios' que tiene, entre otre otros, 3 campos clave para mi consulta. Estos son empresa, caracter y tipo.
Resulta que yo soy el coordinador regional de esta empresa y en mi comunidad tengo varias empresas a mi cargo. Hay varios tipos de servicios que ofrecemos y estos servicios pueden ser de 2 caracteres, públicos o privados.
Como ya os he dicho, yo llevo varias empresas, pero me encuentro situado en una(tecnico, id_empresa), aunque esta empresa pertenece a la comunidad autónoma que abarca todas.
Ahora, debería saber el número de servicios registrados de cada tipo y caracter sólo de las empresas de mi ámbito.
Algo como ésto:
Código SQL:
Ver original
  1. tipos | Caracter | COUNT(*)
  2. ------------------------------------------
  3. tipo1 | Público    |
  4. -------------------------------------------
  5. tipo1 | Privado   |
  6. ------------------------------------------
  7. tipo2 | Público    |
  8. -------------------------------------------
  9. tipo2 | Privado   |
  10. ---------------------------------------------
  11. tipo3 | Público    |
  12. -----------------------------------------------
  13. tipo3 | Privado   |

Ahí deben aparecer todos los tipos de la tabla tipos con los 2 caracteres, hayan o no servicios relacionados.

My consulta en estos momentos es
Código SQL:
Ver original
  1. SELECT nombre_tipo, nombre_caracter, COUNT(*) FROM servicios s(v), tipos t(tv), caracte c(cv)  WHERE s.id_tipo = t.id_tipo AND s.id_caracter = c.id_caracter AND s.id_empresa IN(SELECT e.id_empresa FROM empresas e WHERE id_comunidad IN(SELECT id_comunidad FROM empresas e, tecnicos t WHERE e.id_empresa = t.id_empresa AND id_tecnico = '$id_tec')) AND s.id_caracter IS NOT NULL
  2. GROUP BY   s.id_tipo, s.id_caracter

Esto me arroja sólo el resultado de los tipos de los que hay servicios realizados, pero los otros nada. Y lo que me gustaría sería listar todos los tipos, los caracteres por tipo y el número de servicios aunque sea 0.

Me he explicado bien? Espero no haberos aburrido.
Un saludo y gracias!!