J'ai trois tables
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 on me donnait le nom de l'enseignant ( david
par exemple) et student_id ( 7
par exemple) et qu'on me demandait d'insérer le teacher_id
dans le classroom
tableau en fonction du id
dans le teachers
tableau, je ferais:
insert into classroom (date, teacher_id, student_id)
select '2014-07-08', id, 7
from teachers
where teacher_name = 'david';
Maintenant, que se passe-t-il si je n'ai pas reçu directement l'ID de l'élève et que je n'ai reçu que le nom de l'élève? Supposons que l'on m'ait donné le nom de l'enseignant «david» et le nom de l'élève «sam». Comment puis-je obtenir la teacher_id
de teachers
table et aussi student_id
de la students
table et insérer à la fois dans la classroom
table en fonction de leurs noms respectifs?
mysql
relational-theory
Baba Kamdev
la source
la source
INNER JOIN
depuisteachers
etstudents
n'avez aucune relation de clé étrangère.La façon la plus simple de le faire est d'utiliser des sous-requêtes:
la source
Cela mettra le formulaire de résultat firsttable
value1N, value2N, value3N
et le résultat de secondtablevalueN4
Résultat:
|username|password |name|
--- (a 3 valeurs, mais nous en utilisons une)|id_number|Adress|tel|
--- (a 3 valeurs, nous utilisons tous)|id_number|Adress|tel|username|
----- (nous obtenons 4 valeurs: 3 de la deuxième table et 1 de la première table:la source