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

Consulta erronea

Estas en el tema de Consulta erronea en el foro de Mysql en Foros del Web. Buenas, Estoy optimizando una serie de consultas, pero me he quedado estancado... La consulta pretende sacar 4 datos: todos los nombres e ides de empresas, ...
  #1 (permalink)  
Antiguo 04/03/2011, 03:12
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 4 meses
Puntos: 19
Consulta erronea

Buenas,

Estoy optimizando una serie de consultas, pero me he quedado estancado...

La consulta pretende sacar 4 datos: todos los nombres e ides de empresas, junto con la cantidad de noticias que tienen, y la cantidad de noticias de prensa interna que tienen. Esto he hecho:

Código MySQL:
Ver original
  1. SELECT e.idempresa, e.nombre, count(n.idnoticia) , count(pi.idprensa_i)
  2. FROM noticias n
  3. RIGHT OUTER JOIN empresas e using(idempresa)
  4. LEFT OUTER JOIN prensa_interna pi
  5. USING ( idempresa )
  6. GROUP BY e.idempresa

Las de prensa interna dan bien, pero las de noticias no... ¿Alguien me puede ayudar?

Gracias desde ya!
  #2 (permalink)  
Antiguo 04/03/2011, 04:47
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 4 meses
Puntos: 19
Respuesta: Consulta erronea

Solucionado!
Código MySQL:
Ver original
  1. SELECT e.idempresa, e.nombre,e.email,COALESCE( pi_temp.restemp, 0 ) AS count_prensa,COALESCE( n_temp.restemp, 0 ) AS count_noticias,COALESCE( c_temp.restemp, 0 ) AS count_contacto
  2.             FROM empresas e
  3.             LEFT JOIN (
  4.                 SELECT count( * ) AS restemp, idempresa
  5.                 FROM prensa_interna
  6.                 GROUP BY idempresa
  7.             ) AS pi_temp ON pi_temp.idempresa = e.idempresa
  8.             LEFT JOIN (
  9.                 SELECT count( * ) AS restemp, idempresa
  10.                 FROM noticias
  11.                 GROUP BY idempresa
  12.             ) AS n_temp ON n_temp.idempresa = e.idempresa
  13.             LEFT JOIN (
  14.                 SELECT count( * ) AS restemp, idempresa
  15.                 FROM contacto
  16.                 GROUP BY idempresa
  17.             ) AS c_temp ON c_temp.idempresa = e.idempresa
  18.             WHERE 1

Para quien le interese :D

Etiquetas: Ninguno
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 04:00.