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

Problema con count error en subquery

Estas en el tema de Problema con count error en subquery en el foro de PostgreSQL en Foros del Web. Tengo un problema con una subquery y es que no puedo utilizar el group by en mi subquery @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT ...
  #1 (permalink)  
Antiguo 16/01/2014, 10:13
 
Fecha de Ingreso: noviembre-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 2
Problema con count error en subquery

Tengo un problema con una subquery y es que no puedo utilizar el group by en mi subquery
Código SQL:
Ver original
  1. SELECT centros_trabajo.id,COUNT(*) AS NoTrabajadores,(SELECT COUNT(actividades_economicas_decre.id) FROM actividades_economicas_decre
  2. INNER JOIN centros_trabajo_actividades ON
  3. centros_trabajo_actividades.actividad_economica_id = actividades_economicas_decre.id
  4. INNER JOIN centros_trabajo ON
  5. centros_trabajo.id = centros_trabajo_actividades.centros_trabajo_id
  6. INNER JOIN sedes ON
  7. sedes.id = centros_trabajo.sedes_id
  8. WHERE sedes.empresas_id = 106  
  9. GROUP BY actividades_economicas_decre.id ) AS totalactividades, sedes.direccion,centros_trabajo.descripcion FROM trabajadores
  10. INNER JOIN centros_trabajo_trabajadores ON
  11. centros_trabajo_trabajadores.trabajadores_id = trabajadores.id
  12. INNER JOIN centros_trabajo ON
  13. centros_trabajo.id = centros_trabajo_trabajadores.centros_trabajo_id
  14. INNER JOIN sedes ON
  15. sedes.id = centros_trabajo.sedes_id
  16. WHERE sedes.empresas_id = 106
  17. GROUP BY centros_trabajo.id,sedes.direccion,centros_trabajo.descripcion,totalactividades
  18. ORDER BY centros_trabajo.descripcion ASC

Última edición por gnzsoloyo; 16/01/2014 a las 14:23
  #2 (permalink)  
Antiguo 07/02/2014, 12:54
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Problema con count error en subquery

Entonces no lo uses!
Juass!!

Ya hablando en serio, que quieres lograr?
Imagino que es totalizar trabajadores y actividades económicas.
En cuyo caso sugiero replantear el query, estos podrían ser algunos modos:

Código SQL:
Ver original
  1. -- usando IN
  2. SELECT
  3.     c.id,
  4.     ( SELECT COUNT(trabajadores_id) FROM centros_trabajo_trabajadores WHERE centros_trabajo_id IN (SELECT id FROM centros_trabajo WHERE sedes_id IN (SELECT id FROM sedes WHERE empresas_id = 1) ) ) AS notrabajadores,
  5.     ( SELECT COUNT(actividad_economica_id) FROM centros_trabajo_actividades WHERE centros_trabajo_id IN (SELECT id FROM centros_trabajo WHERE sedes_id IN (SELECT id FROM sedes WHERE empresas_id = 1)) ) AS totalactividades,
  6.     s.direccion, c.descripcion    
  7.     FROM sedes s
  8.     INNER JOIN centros_trabajo c ON s.id = c.sedes_id
  9.     WHERE s.empresas_id = 1
  10.  
  11. -- usando EXISTS
  12. SELECT
  13.     c.id,
  14.     ( SELECT COUNT(trabajadores_id) FROM centros_trabajo_trabajadores WHERE EXISTS (SELECT id FROM centros_trabajo WHERE EXISTS (SELECT id FROM sedes WHERE empresas_id = 1 AND sedes_id = id) AND centros_trabajo_id = id ) ) AS notrabajadores,
  15.     ( SELECT COUNT(actividad_economica_id) FROM centros_trabajo_actividades WHERE EXISTS (SELECT id FROM centros_trabajo WHERE EXISTS (SELECT id FROM sedes WHERE empresas_id = 1 AND sedes_id = id) AND centros_trabajo_id = id ) ) AS totalactividades,
  16.     s.direccion, c.descripcion    
  17.     FROM sedes s
  18.     INNER JOIN centros_trabajo c ON s.id = c.sedes_id
  19.     WHERE s.empresas_id = 1
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 07/02/2014 a las 13:58

Etiquetas: as, count, join, select, subquery
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 20:00.