Tengo tres mesas
students table
------------------------------------
id(PK, A_I) | student_name | nationality
teachers table
------------------------------------
id(PK, A_I) | teacher_name | email
classroom table
----------------------
id(PK, A_I) | date | teacher_id(FK to teachers.id) | student_id(FK to students.id)
Si me dieran el nombre del profesor ( davidpor ejemplo) y student_id ( 7por ejemplo) y me pidieran que inserte el teacher_iden la classroomtabla en función de idla teacherstabla, haría:
insert into classroom (date, teacher_id, student_id)
select '2014-07-08', id, 7
from teachers
where teacher_name = 'david';
Ahora, ¿qué pasa si no me dieron la identificación del estudiante directamente y solo me dieron el nombre del estudiante? Supongamos que me dieron el nombre del maestro 'David' y el nombre del estudiante 'Sam'. ¿Cómo obtengo la tabla teacher_idfrom teachersy también student_idla studentstabla e inserto ambas en la classroomtabla según sus respectivos nombres?
mysql
relational-theory
Baba Kamdev
fuente
fuente

INNER JOINsinceroteachersystudentsno tiene una relación de clave externa.La forma más fácil de hacerlo es mediante subconsultas:
fuente
Esto pondrá el resultado de la primera tabla
value1N, value2N, value3Ny el resultado de la segunda tabla.valueN4Resultado:
|username|password |name|--- (tiene 3 valores, pero usamos uno)|id_number|Adress|tel|--- (tiene 3 valores, usamos todos)|id_number|Adress|tel|username|----- (obtenemos 4 valores: 3 de la segunda tabla y 1 de la primera tabla:fuente