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

tengo problemas para contar registros...

Estas en el tema de tengo problemas para contar registros... en el foro de Mysql en Foros del Web. Buenos dias amigos: El problema que tengo es el siguiente, tengo tres tablas primer tabla se llama receta: `id_receta` `id_est` `id_expediente` `id_medicamento` `cantidad` la segunda ...
  #1 (permalink)  
Antiguo 12/05/2009, 11:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Exclamación tengo problemas para contar registros...

Buenos dias amigos:
El problema que tengo es el siguiente, tengo tres tablas
primer tabla se llama receta:
`id_receta`
`id_est`
`id_expediente`
`id_medicamento`
`cantidad`
la segunda se llama persona:
`id_persona`
`nombre`
`id_expediente`
la tercer tabla se llama estasib que se refiere a establecimientos o lugares
`idest`
`NOMBRE`

he hecho este query que me cuente cuantas recetas y personas son del sexo masculino:

select count(r.id_receta) total, (p.id_expediente), sum(if(p.sexo='M', 1, 0) ) M
from receta r, persona p
where r.id_expediente=p.id_expediente
group by p.id_expediente

este query me dice que solo hay un expediente y tres recetas, el problema que cuando le digo que cuantos son masculinos me dice que tres son masculinos cuando solo hay un expediente que seria a decir que solo hay uno de sexo masculino ..
como puedo hacer para que el query no me cuente las recetas sino los expedientes para defirnir cuantos son masculinos:
el resultado del query es:

total id_expediente M
3 1 3
1 2 1
1 3 0

Por favor si alguien me ayuda a hacer el query de otra forma para obtener los datos correctos
  #2 (permalink)  
Antiguo 12/05/2009, 12:08
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
De acuerdo Respuesta: tengo problemas para contar registros...

Buenas,

Pruena con esta:
Código PHP:

select count
(r.id_recetatotal, (p.id_expediente), sum(if(p.sexo='M'10) ) M
from receta r LEFT JOIN persona p ON r
.id_expediente=p.id_expediente
group by p
.id_expediente 
Saludos
  #3 (permalink)  
Antiguo 12/05/2009, 12:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: tengo problemas para contar registros...

Muchas gracias por responder ....
probando este query me da el mismo resultado...me cuenta la cantidad de masculinos con la misma cantidad de recetas....asi que no me funciona...

muchas gracias nuevamente
  #4 (permalink)  
Antiguo 12/05/2009, 12:36
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
De acuerdo Respuesta: tengo problemas para contar registros...

Buenas,

Prueba de nuevo pero asi:

Código PHP:
select count(r.id_recetatotalsum(if(p.sexo='M'10) ) M
from receta r LEFT JOIN persona p ON r
.id_expediente=p.id_expediente 
Saludos
  #5 (permalink)  
Antiguo 12/05/2009, 13:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: tengo problemas para contar registros...

Gracias nuevamente, pero al ejecutar este query lo que me genera es un total de recetas y un total de expedientes masculinos donde los que son femeninos me los cuenta como masculinos....

gracias por estarme ayudando....

saludos
  #6 (permalink)  
Antiguo 12/05/2009, 13:29
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
De acuerdo Respuesta: tengo problemas para contar registros...

Buenas,

Prueba poniendo

Código PHP:
select count(r.id_recetatotalsum(if(p.sexo='M'10) ) M
from receta r INNER JOIN persona p ON r
.id_expediente=p.id_expediente 
group by r
.id_receta 

Saludos y Mantente en contacto
  #7 (permalink)  
Antiguo 12/05/2009, 14:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: tengo problemas para contar registros...

con este query no suma la cantida de masculinos hay por receta.....

muchas gracias por tu ayuda....
  #8 (permalink)  
Antiguo 12/05/2009, 14:29
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: tengo problemas para contar registros...

Prueba esta:

Código mysql:
Ver original
  1. select count(r.id_receta) total,  p.M
  2. from receta r INNER JOIN
  3. (select id_expediente, sum(sexo) M from persona
  4. where sexo = 'M' group by id_expediente) p
  5. ON r.id_expediente=p.id_expediente  
  6. group by r.id_receta

No la he probado.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 12/05/2009, 14:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: tengo problemas para contar registros...

fijate que para este query lo que me devuelve es:

Total M
1 0
1 0
1 0
1 0
por lo que no es correcto su resultado...
gracias por tu ayuda
  #10 (permalink)  
Antiguo 12/05/2009, 14:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: tengo problemas para contar registros...

Alejandro... podrías compartir con nosotros algunos registros que tienes en cada tabla y la salida que esperas?
Si te queda fácil, las sentencias donde creas las tablas. los create table para ver que tipo de datos tienen las tablas y que puede estar pasando.

De esta forma, entre todos podemos visualizar el problema como lo haces tu y será mas eficiente darle una solución.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 12/05/2009, 15:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años
Puntos: 0
Respuesta: tengo problemas para contar registros...

ok...
la tabla estasib este es la estructura:
CREATE TABLE `estasib` (
`idest` int(4) NOT NULL auto_increment,
`etz` int(2) NOT NULL default '0',
`SIB` int(2) default NULL,
`subred` int(4) NOT NULL default '0',
`NOMSIBASI` varchar(30) default NULL,
`REG` int(1) default NULL,
`DEP` int(2) default NULL,
`MUN` int(2) default NULL,
`idmun` int(3) unsigned NOT NULL default '0',
`TIP` char(1) default NULL,
`UDEP` int(2) NOT NULL default '0',
`UMUN` char(2) default NULL,
`NTIP` char(1) default NULL,
`TIPO` int(1) default NULL,
`NOMBRE` varchar(40) default NULL,
`FUNCHONA` char(1) default NULL,
`ESTABLEC` varchar(6) default NULL,
`CODLOC` varchar(4) default NULL,
PRIMARY KEY (`idest`),
KEY `sibasi` (`SIB`),
KEY `ruta` (`REG`,`DEP`,`MUN`,`TIP`),
KEY `tipo` (`NTIP`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=845 ;

la tabla receta es:
CREATE TABLE `receta` (
`id_receta` int(10) NOT NULL auto_increment,
`id_est` int(4) NOT NULL,
`id_expediente` int(9) NOT NULL,
`id_medicamento` int(10) NOT NULL,
`cantidad` int(10) NOT NULL,
`id_medico` int(10) NOT NULL,
`fe_receta` date NOT NULL,
`fe_entrega` date NOT NULL,
`user_add` int(4) NOT NULL,
`fe_add` date NOT NULL,
`user_mod` int(4) NOT NULL,
`fe_mod` date NOT NULL,
PRIMARY KEY (`id_receta`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

la tabla persona la estructura es:
CREATE TABLE `persona` (
`id_persona` int(9) NOT NULL auto_increment,
`fe_registro` date NOT NULL,
`nombre` varchar(20) NOT NULL,
`apellidos` varchar(20) NOT NULL,
`fe_nac` date NOT NULL,
`edad` int(3) NOT NULL,
`sexo` varchar(9) NOT NULL,
`dui` varchar(10) NOT NULL,
`procedencia` varchar(6) NOT NULL,
`id_depto` int(2) NOT NULL,
`id_munic` int(3) NOT NULL,
`fe_ini_tera` date NOT NULL,
`id_esquema` int(2) NOT NULL,
`id_cam_esque` int(2) NOT NULL,
`id_estado` int(1) NOT NULL,
`tipo_trata` varchar(10) NOT NULL,
`estado` varchar(1) NOT NULL,
`user_add` int(4) NOT NULL,
`fe_add` date NOT NULL,
`user_mod` int(4) NOT NULL,
`fe_mod` date NOT NULL,
`id_expediente` int(9) NOT NULL,
`id_est` int(4) NOT NULL,
`id_medico` int(10) NOT NULL,
PRIMARY KEY (`id_persona`),
UNIQUE KEY `unico` (`id_expediente`,`id_est`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

los registros que tiene la tabla persona son:
id_persona nombre apellidos sexo id_expediente id_est
1 juan jose bonilla M 1 1
2 raul rivera M 2 2
3 Sergio Pineda M 3 2

los registros de la tabla receta:
id_receta id_est id_expediente id_medicamento
1 1 1 1
2 1 1 2
3 2 2 12
4 2 4 5
me piden un reporte de esta forma:

ESTABLECIMIENTO TOTAL DE RECETAS TOTAL PERSONAS TOTAL MASCULINOS

X 2 1 1
Y 2 2 2

Espero que me de a entender...le agradezco mucho por su ayuda valiosa...
  #12 (permalink)  
Antiguo 13/05/2009, 05:57
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
Respuesta: tengo problemas para contar registros...

Buenas,

Podrias exportar y publicar los datos de las tablas

Saludos
  #13 (permalink)  
Antiguo 13/05/2009, 06:21
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 3 meses
Puntos: 43
De acuerdo Respuesta: tengo problemas para contar registros...

Buenas,

Probando esto :
Código PHP:
SELECT countr.id_receta totalsum( if( p.sexo 'M'1) ) M
FROM receta r
INNER JOIN persona p ON r
.id_expediente p.id_expediente 
Me devuelve lo sig:
total M
3 3

Saludos
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 03:56.