J'ai ces deux tables juste par exemple:
TAB_TEACHER
- id_teacher // primary key, autoincrement
- name_teacher // a varchar
TAB_STUDENT
- id_student // primary key, autoincrement
- name_student // a varchar
- id_teacher_fk // foreign key reference to a teacher (TAB_TEACHER)
Je veux savoir comment insérer dans ces deux cas:
CAS 1- Insérez un nouvel étudiant avec un enseignant pré-existant
CAS 2- INSÉRER un nouvel étudiant avec un nouvel ENSEIGNANT
http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
Pour le cas1:
INSERT INTO TAB_STUDENT(name_student, id_teacher_fk)
SELECT 'Joe The Student', id_teacher
FROM TAB_TEACHER
WHERE name_teacher = 'Professor Jack'
LIMIT 1
Pour case2, il vous suffit de faire 2 instructions d'insertion distinctes
Voici une syntaxe alternative que j'utilise:
INSERT INTO tab_student
SET name_student = 'Bobby Tables',
id_teacher_fk = (
SELECT id_teacher
FROM tab_teacher
WHERE name_teacher = 'Dr. Smith')
Je fais cela dans Excel pour importer un tableau croisé dynamique dans une table de dimension et une table de faits en SQL afin que vous puissiez importer dans les tables bost department
et expenses
parmi:
Heureusement, MySQL supporte LAST_INSERT_ID()
exactement à cette fin.
INSERT INTO tab_teacher
SET name_teacher = 'Dr. Smith';
INSERT INTO tab_student
SET name_student = 'Bobby Tables',
id_teacher_fk = LAST_INSERT_ID()
INSERT INTO tab_student (name_student, id_teacher_fk)
VALUES ('dan red',
(SELECT id_teacher FROM tab_teacher WHERE name_teacher ='jason bourne')
il est conseillé de stocker vos valeurs en minuscules pour faciliter la récupération et réduire le risque d'erreur
INSERT INTO tab_teacher (name_teacher)
VALUES ('tom stills')
INSERT INTO tab_student (name_student, id_teacher_fk)
VALUES ('rich man', LAST_INSERT_ID())