buenas noches tengo un problema de relaciones entre dos tablas y soy muy novato en el tema y espero que en este foro de profesionales me ayuden a resolverlo gracias de antemano
estoy haciendo un sistema de un censo donde las personas se registran con nombre apellido cedula y registran a sus familiares con sus nombre apellidos y su parentesco con el jefe familiar, tengo una tabla para el jefe familiar y otra para los parientes
la tabla del jefe familiar
id_jefefamiliar
cedula
nombre
apellido
y la tabla de los prientes
id_pariente
cedula
nombre
apellido
tipo_parentezco
pero no se como relacionarlos para que a la hora de la consulta se relacionen los parientes con su respectivo jefe familiar ya que los id de las dos tablas son autoincrementales y no se repiten, como podria hacer la relacion de un jefe familiar a muchos parientes
muchas gracias de antemano por su colaboracion
Publicado:
Mar Sep 03, 2013 10:50 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: relacionar dos tablas en mysql
Anuncios
Te recomendamos, si te es posible que cambies la estructura de las tablas, en vez de tener dos, una para los jefes y otra para las personas, sería más eficiente que tuvieras solo una para jefes y personas, la estructura sería:
Tabla: personas
Campos:
id_persona
cedula
nombre
apellido
id_jefefamiliar
tipo_parentezco
En el campo "id_jefefamiliar" guardarás el "id_persona" de la persona que sea jefe de esta. Así tendrás todo en una tabla y no duplicarás datos innecesarios.
En este caso la consulta SQL para obtener todos los parientes de un jefe familiar sería:
Código:
select *
from personas
where id_jefefamiliar = XXXX;
Los jefes de familia no tendrán nada en el campo "id_jefefamiliar" salvo que quisieras "anidar" familias y que un jefe familiar a su vez pudiera ser miembro de otra familia y tuviera un jefe familiar por encima, pero no creo que sea tu caso.
Publicado:
Jue Sep 05, 2013 7:10 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: relacionar dos tablas en mysql
Anuncios
Si a la fuerza tienes que usar esas dos tablas que nos comentas, para relacionarlas necesitas añadir el campo "id_jefefamiliar" a la tabla de los parientes:
id_pariente
id_jefefamiliar
cedula
nombre
apellido
tipo_parentezco
En ese campo "id_jefefamiliar", que es clave foránea de la tabla "jefe familiar" guardarás el id_jefefamiliar de la tabla "jefe familiar" que es jefe de familia de dicho pariente.
De esta forma, una consulta SQL para mostrar los parientes que tienen un jefe familiar (con el nombre de este) podría ser:
Código:
select p.*, j.nombre Jefe_Familia
from parientes p, jefes j
where p.id_jefefamiliar = j.id_jefefamiliar and j.id_jefefamiliar = XXX;
Donde "XXX" será el id del jefe de familia del que quieras mostrar los parientes.
Una consulta equivalente a la anterior usando Inner Join sería:
Código:
select p.*, j.nombre Jefe_Familia
from parientes p
inner join jefes j on p.id_jefefamiliar = j.id_jefefamiliar
where j.id_jefefamiliar = XXX;
Publicado:
Jue Sep 05, 2013 7:20 am
jecavi20 Usuario
Registrado: Sep 04, 2013 Mensajes: 3
Asunto:
para guardar el id en la tabla parientes id_jefefamiliar podria usar el mysqli_insert_id() lo guardo en una variable y despues la variable la inserto en el insert into table normalmente como si fuera la variable de un registro cierto?
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A