Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: trachtenberg en 26 Noviembre 2012, 02:28



Título: ayuda con problema al usar IN causa desagrupacion de los resultados
Publicado por: trachtenberg en 26 Noviembre 2012, 02:28
saludos, estoy creando una tabla por meses  y con  total  donde al quere saber su existencia de tantos codigos , lo he realizado
 codigo1 IN(..)AND IN codigo2 IN (... ) ....
me resulta bien cuando solo uso uno digamos codigo1 ... si uso mas IN para los demas codigos ..  el resultado no es el esperado se desagrupa .. me ignora el where desc_red='mired'

solo deberian ser 10 registros y sale muchos .. estoy intentado ya de varias formas, se me estan termnado las ideas xD 

gracias, aki mi consulta:>
 
Código
  1. SELECT IFNULL(establec.desc_estab, 'TOTAL') AS 'Establecimiento',
  2. COUNT(CASE MONTHNAME(fecha) WHEN 'January' THEN 1 ELSE NULL END) AS Enero,
  3. COUNT(CASE MONTHNAME(fecha) WHEN 'February' THEN 1 ELSE NULL END) AS Febrero,
  4. COUNT(CASE MONTHNAME(fecha) WHEN 'March' THEN 1 ELSE NULL END) AS Marzo,
  5. COUNT(CASE MONTHNAME(fecha) WHEN 'April' THEN 1 ELSE NULL END) AS Abril,
  6. COUNT(CASE MONTHNAME(fecha) WHEN 'May' THEN 1 ELSE NULL END) AS Mayo,
  7. COUNT(CASE MONTHNAME(fecha) WHEN 'June' THEN 1 ELSE NULL END) AS Junio,
  8. COUNT(CASE MONTHNAME(fecha) WHEN 'July' THEN 1 ELSE NULL END) AS Julio,
  9. COUNT(CASE MONTHNAME(fecha) WHEN 'August' THEN 1 ELSE NULL END) AS Agosto,
  10. COUNT(CASE MONTHNAME(fecha) WHEN 'September' THEN 1 ELSE NULL END) AS Setiembre,
  11. COUNT(CASE MONTHNAME(fecha) WHEN 'October' THEN 1 ELSE NULL END) AS Octubre,
  12. COUNT(CASE MONTHNAME(fecha) WHEN 'November' THEN 1 ELSE NULL END) AS Noviembre,
  13. COUNT(CASE MONTHNAME(fecha) WHEN 'Dicember' THEN 1 ELSE NULL END) AS Diciembre,
  14. COUNT(fecha) AS Total,establec.desc_red FROM his_2012,establec
  15. WHERE establec.desc_red="mired" AND codigo1 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost1='D'
  16. OR codigo2 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost2='D'
  17. OR codigo3 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost3='D'
  18. OR codigo4 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost4='D'
  19. OR codigo5 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost5='D'
  20. OR codigo6 IN('A37','J180','J050','J051','J90','J851','J86','J10','J11','J939','J188','J1891','J1892') AND diagnost6='D'
  21. AND edad >=1 AND edad<=29
  22. GROUP BY establec.desc_estab WITH ROLLUP


Título: Re: ayuda con problema al usar IN causa desagrupacion de los resultados
Publicado por: trachtenberg en 26 Noviembre 2012, 03:11
problema resuelto ..
solo era cuestión de paréntesis  por el valor OR todo el registro me devuelva un solo valor asi :
establec.desc_red="mired" AND ( ( codigo1 IN('A37','J180','J05') AND diagnost1='D' ) OR ( codigo2 IN('A37','J180','J050') AND diagnost2='D' ) OR ( Codigo3...) ) AND edad >=1 AND edad<=29
 ahi la idea .