Eu tenho três 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)
Se eu foi dado o nome do professor ( david
por exemplo) e student_id ( 7
por exemplo) e pediu para inserir o teacher_id
na classroom
tabela com base no id
na teachers
mesa, eu faria:
insert into classroom (date, teacher_id, student_id)
select '2014-07-08', id, 7
from teachers
where teacher_name = 'david';
Agora, e se eu não receber o ID do aluno diretamente e apenas o nome do aluno? Suponha que me deram o nome do professor 'david' e o nome do aluno 'sam'. Como obtenho a tabela teacher_id
from teachers
e também student_id
da students
tabela e insiro ambos na classroom
tabela com base em seus respectivos nomes?
mysql
relational-theory
Baba Kamdev
fonte
fonte
INNER JOIN
desde entãoteachers
estudents
não possui relacionamento de chave estrangeira.A maneira mais fácil de fazer isso é usando subconsultas:
fonte
Isso colocará o resultado da primeira tabela
value1N, value2N, value3N
e o resultado da segunda tabelavalueN4
Resultado:
|username|password |name|
--- (tem 3 valores, mas usamos um)|id_number|Adress|tel|
--- (tem 3 valores, usamos todos)|id_number|Adress|tel|username|
----- (obtemos 4 valores: 3 da segunda tabela e 1 da primeira tabela:fonte