Insertar datos en tablas relacionadas PHP

Tengo un problemita je je poseo dos tablas:
Tabla: personal
id int NOT NULL PRIMARY KEY
Nombre varchar(128)
Apellido varchar(128)
Idemergencia int <-- este campo es una FOREING KEY y otra
Tabla emergencia:
id int NOT NULL PRIMARY KEY
Apellido varchar(128)
Nombre varchar(128)
Cedula varchar(128)
Lo que me gustaría me dijeras es como puedo hacer una consulta en PHP para cargar las tablas donde idemergencia de personal esta ligada a id de la tabla emergencia pues es una relación 1:1 y tiene que coincidir...

1 respuesta

Respuesta
1
La consulta que necesitas para traer los campos de 2 tablas sería
SELECT * FROM personal,emergencia WHERE personal.idemergencia = emergencia.id
Esto te trae como resultado todos los registros de ambas tablas relacionadas, es decir cada registro de esta consulta contiene los datos:
Personal. Id
Personal. Nombre
Personal. Apellido
Personal. Idemergencia <- este dato es igual al de la siguiente columna (emergencia. Id)
Emergencia. Id <- este dato es igual al de la columna anterior (personal. Idemergencia)
Emergencia. Apellido
Emergencia. Nombre
Emergencia. Cedula
Lo que estamos haciendo con la consulta es traer todos los campos de ambas tablas pero solo cuando los id de emergencia coincidan ( WHERE personal.idemergencia = emergencia.id)
Como veras hay 2 cosas que notar:
1.- Tenemos un campo duplicado para cada registro, (personal. Idemergencia con emergencia. Id) que es normal porque precisamente esa es la condición que estamos buscando dada de tus tablas 1:1
2.- Como hay nombres de columnas iguales en las 2 tablas (p.e. "nombre" en la tabla personal y "nombre" en la tabla emergencia), lo mejor es hacer referencia a todos los campor con el nombre de su tabla explicito, por ejemplo:
nombre_tabla.nombre_columna
Así podemos diferenciar "personal.nombre" de "emergencia.nombre"
Esa es la explicación de tu consulta, ya si quieres un caso practico de implementarla en php, pues el código debería ser algo así como esto (si es que tu base de datos es mysql)
---------------------------------------------
$conexion = mysql_connect("localhost", "usuario", "clave"); // tus datos de conexion a mysql
mysql_select_db("demo", $conexion);//nombre de tu base de datos
$query = "SELECT * FROM personal,emergencia WHERE personal.idemergencia = emergencia.id";
$empleados = mysql_query($query, $conexion) or die(mysql_error());//guardamos en una variable el resultado de la consulta
$numeroEmpleados = mysql_num_rows($empleados); // por si quieres saber la cantidad de registros
if ($numeroEmpleados> 0) {
while ($empleado = mysql_fetch_assoc($empleados)) { // hacemos un while para recorrer empleado por empleado , es decir, registro por registro de la consulta
echo "<strong>Personal:".$empleado['personal.nombre']." ".$empleado['personal.apellido']."</strong><br>";
echo "<br>Datos de emergencia<br/>cedula: ".$empleado['emergencia.cedula']."<br>";
echo "- ".$empleado['emergencia.nombre']." ".$empleado['emergencia.apellido']."<br><br><br><br>";
}
}
La verdad no probé el código así que igual y se me fue algún error por ahí, pero checalo y cualquier duda me avisas ;). Espero que ue te sirva. Saludos!
Rafael Reyna Lagunas
Desarrollo web
http://digitalcrossroads.com.mx

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas