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

Consulta para contar cuantas familias hay en la bd

Estas en el tema de Consulta para contar cuantas familias hay en la bd en el foro de PostgreSQL en Foros del Web. Hola amigos, espero esten bien.Estoy aproblemado con una consulta q me permita saber cuantas familias hay en la bd mis tablas son las siguientes: niño: ...
  #1 (permalink)  
Antiguo 26/02/2009, 18:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Consulta para contar cuantas familias hay en la bd

Hola amigos, espero esten bien.Estoy aproblemado con una consulta q me permita saber cuantas familias hay en la bd mis tablas son las siguientes:

niño: id_niño, nombre_niño, apellido_paterno, apellido_materno, fecha_nacimiento... etc. (el id del niño es ingresado por el usuario)

madre: id_madre(campo de tipo int q lo incremento desde php), nombre_madre, apellido_paterno_madre, apellido_materno_madre, fecha_nacimiento.... etc

padre: id_padre(campo de tipo int q lo incremento desde php), nombre_padre, apellido_paterno_padre, apellido_materno_padre, fecha_nacimiento.... etc

FAMILIA: id_familia(campo de tipo int q lo incremento desde php), id_padre, id_madre, id_niño (todas estas claves foraneas), familia_primer_apellido, familia_segundo_apellido

lo q quiero es obtener cuantas familias tengo en la bd, pero al ser el count (SELECT count (id_familia) from familia) al hacer esa consulta q puse entre parentesis me trae el total de las familias pero me incluye a las familias q tienen mas de un hijo eso quiere decir q me trae a familias repetidas,lo q yo quiero es q me traiga el total de las familias pero no repetidas es decir si una familia aparece mas de una vez q me traiga a esa familia dentro del resultado pero solo como una familia y no kuantas veces esta aparesca ¿como puedo hacer esta consulta de acuerdo a mi modelo de bd q tengo? o sino de q otra forma podria modelar a la bd para lograrlo??? porfavor ruego por su ayuda amigos de antemano gracias estoy urgidicimo .... Bye

PD:uso postgre 8.2 y php 5
  #2 (permalink)  
Antiguo 27/02/2009, 03:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

La tabla de familia la deberias de cambiar, porque segun tu diseño si una familia tiene 5 hijos, existen 5 registros en la tabla de familia con 5 ids distintos, cuando es la misma familia.

Deberias tener una tabla del tipo familia_x_hijos que relaciona la familia con los hijos. De este modo el id de familia seria unico.

Con tu diseño, una forma "chapuza" de hacerlo (suponiendo que estoy en lo correcto en lo comentado antes sobre ids distintos):

select count(distinct id_padre) from familias


Salu2
  #3 (permalink)  
Antiguo 27/02/2009, 09:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta para contar cuantas familias hay en la bd

Ok seyko entiendo, pero lo tengo asi ya q estoy haciendo un sistema en el cual el niño puede tener padres o puede tener tutor, por lo q cuando el niño no vive con sus padres vive con tutor y si es asi tambien necesito saber cuantas familias del tipo tutor existen la tabla, por ejemplo si niño vive con tios se ingresa solo el responsable del niño(tutor) y si vive con madre solo se ingresan los datos de la madre ya q esella la exclusiva responsable del niño lo mismo para el padre ahora mi pregunta es ¿como puedo modelar la bd para lograr hacer la consulta q necesito? (contar cuantas familias y tutores excisten) por favor rogaria de su ayuda amigos me falta esa consulta para casi terminar mi sistema , de antemano gracias, bye....
  #4 (permalink)  
Antiguo 28/02/2009, 04:05
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

Si no puedes/quieres cambiar el diseño de la BD, necesitaria el diseño de las tablas y los tipos de datos que puede tener la tabla familia para darte una consulta que haga exactamente lo que necesitas.


Salu2
  #5 (permalink)  
Antiguo 28/02/2009, 13:02
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta para contar cuantas familias hay en la bd

Ok seykoaqui dejo la tabla familia para q porfavor me heches una mano para cambiarla y asi poder realizar la query q necesito:

tabla FAMILIA:

campo ID_FAMILIA tipo int4 (tipo entero y voy autoincrementando el codigo mediante una consulta hecha por php asi:
Código PHP:
$CODIGO="select max(id_familia) from familia";
$resultado_codigo_familiapg_exec ($conn$CODIGO);
while(
$row_familia pg_fetch_array($resultado_codigo_familia))
{
    
$id_familia=($row_familia[0]+1);    

campo ID_MADRE tipo int4, q lo voy incrementando por php al igual q ID_FAMILIA

campo ID_PADRE iguallo voy incrementando al igual q los dos anteriores.

campo ID_NINO tipo varchar 4 ya q me pidieron q el id del nino se ingrese anteponiendo ceros antes del entero (este campo ID_NINO lo ingresa el usuario), ejemplo 0001.

esos son mis campos en la tabla familia, y en la tabla padre y madre obviamente tb son de tipo int4 q los voy incrementando via php mediante un query a la bd, ahora porfavor como tendria q kedar la tabla familia para poder hacer el query q necesito??? (saber cuantas familias hay en mi bd) porfavor ruego de su ayuda amigos de antemano gracias.... bye

sorry sorry me faltaron estos dos campos q son:

familia_primer_apellido tipo varchar 300
familia_segundo_apellido varchar 300
estos campos los tengo para comprobar si los niños son hermanos o no comparando sus apellidos mediante un query y si los dos apellidos son iguales entonces son hermanos, aun q corro el riesgo de un alcance de apellidos y realmente no sean hermanos y solo sea coinsidencia, por lo mismo porfavor como deberia modelar mi tabla familia para obtener el quety q necesito????? RUEGO POR SU AYUDA AMIGOS, ahora si de antemano muchas gracias.... bye

Última edición por r0xdrig0; 28/02/2009 a las 13:09
  #6 (permalink)  
Antiguo 01/03/2009, 06:46
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

En lugar de incrementar el id con una select, puedes utilizar el pseudotipo serial, que te hace eso automaticamente a nivel de base de datos, evitando tener que hacer una query cada vez que se inserta un registro y te evita posibles problemas de concurrencia.

Yo diseñaria las tablas de la siguiente forma:

create table familia (id serial primary key, id_madre integer references tabla_madre(id), id_padre references tabla_padre(id));

create table familia_x_hijos (id_familia integer reference familia(id), id_hijo varchar(4) reference tabla_hijo(id), primary key (id_familia, id_hijo));

Ahora independientemente del numero de hijos que tenga la familia solo se inserta en familia 1 vez.
Para contar el numero de familias solo tienes que contar el numero de registros de la tabla familia.
Para saber los apellidos del padre o de la madre, haces join de familia con padre o madre y seleccionas sus apellidos.
Para comprobar si dos niños son hermanos te basta con comprobar si id_familia coincide en familia_x_hijos, evitando posibles coincidencias de apellidos.

mmmm creo que eso es todo...

Salu2
  #7 (permalink)  
Antiguo 01/03/2009, 19:28
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta para contar cuantas familias hay en la bd

Hola seyko, lo probe como tu me dijiste pero quedo igual como estaba anteriormente, ya q el codigo de padre y madre se van autoincrementando, porque como dije anteriormente no dejan ingresar el identificador unico por teclado, (en mi caso en mi pais es el rut identificador nacional unico para cada persona), por lo cada vez q ingreso a un nuevo niño debo ingresar los datos de el responsable de el ya q el puede vivir con su familia ( padre y madre) o solo con su madre o solo con su padre o con alguna otra persona q este a cargo de dicho niño poe lo q cada vez q ingreso a un niño debo ingresar a su padre y madre (si es q vive con ellos), y como tengo los id con autoincremento me los tomara como familia distinta es decor, si tengo q ingresar a dos niños q son hermanos y viven con sus padres debo ingresar los datos de los padres dos veces igual, para el niño uno y luego para el niño dos y como los id de padres los tengo con autoincrement me los tomara como una familia distinta PORFAVOR LES RUEGO q me ayuden a resolver esto ya q no le encuentro solucion como lo podre hacer????? ruego por su ayuda amigos de antemano gracias..... bye
  #8 (permalink)  
Antiguo 02/03/2009, 05:37
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

Es el mismo problema de las familias pero ahora con los padres. Si lo haces asi te va a costar horrores hacer cualquier consulta, porque el diseño esta "mal" y te cargas de un golpe la consistencia de la base de datos.
Por ejemplo, despues de meter una familia de 8 hijos, tienes 8 veces el padre y 8 veces la madres, esto esta MAL sin ". A parte que puedes cometer alguna vez errores al introducir los datos de los padres.... Con lo que tendrias padres que son los mismos pero que no tienen el mismo apellido porque una de las veces cometiste un error al introducirlo.
Si no cambias el diseño, lo vas a tener dificil para contar las familias, o cualquier otra cosa que quieras hacer.

Salu2
  #9 (permalink)  
Antiguo 02/03/2009, 09:55
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta para contar cuantas familias hay en la bd

Ok seyko lo se, pero mi problema q me tiene loco pensando es ¿como lo puedo hacer para q padre y madre tengan un id unico no autoincrementable?, para q asi solo sean ingresados una sola vez e identificar claramente que pertenecen solo a una unica familia, ese es mi problema el cual no le encuentro solucion por ahora ¿como podria lograr esto amigos? de verdad he pensado mucho pero no logro dar con la solucion concreta pleaseee amigos ayudaaaaaaaaa ....... de antemano gracias.... bye
  #10 (permalink)  
Antiguo 03/03/2009, 08:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

Puedes dejar que el ID sea autoincrementable.
Antes de insertar un padre o una madre comprueba si existe ya, por ejemplo buscando el DNI (España) que es unico para cada persona, en caso afirmativo utilizas el id que ya existe, si no existe lo insertas.
Si no tienes un algo como DNI, puedes mirar por el nombre y apellidos y la fecha de nacimiento para que sea más "seguro" que es la misma persona.
Asi ya tienes solo una vez cada padre, una vez cada madres, una vez cada hijo y una vez cada familia.
Cualquier consulta sobre este esquema es bastante sencilla.

Salu2
  #11 (permalink)  
Antiguo 03/03/2009, 13:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Consulta para contar cuantas familias hay en la bd

Ok, muchas gracias por tu pasiencia y guia, claro si pudiece usar el DNI de cada padre y madre se me haria todo mas facil, pero casi por reglas de negocio me dijieron q no lo usaban pq no les interesa ese dato, ahora una pregunta amigos ¿Seria poco profesional yo (por llamarlo asi) si les pido a ellos q desde ahora en adelante se comience a utilizar el DNI de los padres apartir de la puesta en marcha del sistema q estoy desarrollando para ellos? q me aconsejan??? se los planteo?? o solo sigo trabajando tal como tengo todo ahora?? porque claro para mi y para el sistema q estoy desarrollando seria de mucha utilidad para mi y para realizar las querys del sistema ¿q me aconsejan? les pido q me dejen implantar el DNI de cada padre/madre en el sistema??? de antemano muchas gracias y gracias seyko por seguir mi problema cualquier cosa relacionada con este tema lo vuelvo a postear aca gracias.... bye
  #12 (permalink)  
Antiguo 04/03/2009, 03:42
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Consulta para contar cuantas familias hay en la bd

Depende de la relación que tengas con el cliente, pero si se lo "vendes" bien.... Señor cliente, incorporando el dni a nuestro sistema evitaremos posibles errores e inconsistencia de datos, dando por tanto un servicio más eficiente.... o algo asi.
Y sobre todo que le toque el bolsillo, es decir, Sr Cliente si lo hacemos como yo digo (que para eso me pagas, por mis conocimientos) se consigue una escalabilidad del productomá más sencilla lo que repercutira en que posibles ampliaciones del sistema sean más rapidas y baratas...

Salu2
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 17:17.