Hello,
Mettons que j'ai 4 tables dans ma base :
- 'animaux' avec dedans des animaux nommés un par un, et notamment deux colonnes "id_proprietaire" et "id_race"
- 'proprietaires' pour entreproser les noms et infos des propriétaires des animaux. Dans cette table, j'appelle la colonne d'id "id_proprietaire", comme dans la table animaux.
- 'races' (berger allemand, berger des pyrénées, chihuahua, etc) avec dedans notamment une colonne id_espece. Dans cette table, j'appelle la colonne d'id "id_race", comme dans la table animaux.
- 'especes' (chien, chat, tortue, etc). Dans cette table, j'appelle la colonne d'id "id_espece", comme dans la table races.
J'ai deux questions :
1) Mettons que je veuille ajouter dans ma table animaux un nouvel animal, dont je connais le nom du propriétaire, la race et l'espèce, mais je ne connais pas les id correspondants à ces infos dans les autres tables. D'après ce que j'ai pu trouver sur internet, je peux faire des espèces de jointures lors des insertions, mais est-ce que je peux faire ça deux fois d'un seul coup ou est-ce qu'il faut découper ? Autrement dit, est-ce que ce genre de requête est valide :
INSERT INTO animaux (nom, age, id_proprietaire, id_race)
SELECT 'Rantanplan', '12', id AS id_proprietaire, id AS id_race
FROM races WHERE race = 'berger allemand'
FROM proprietaires WHERE nom_proprietaire = 'Jean Dupont';
Si c'est faisable comme ça, je ne suis pas sur de bien comprendre la syntaxe, donc est-ce qu'elle est correcte, et est-ce que l'ordre des deux dernières lignes importe (là j'ai volontairement inversé par rapport à l'ordre dans le SELECT, ça fonctionnera ?)
Edit : bon en fait j'ai fini par trouver seul ma réponse et visiblement, je ne peux pas supprimer le sujet, donc autant donner la solution :
INSERT INTO animaux (nom, age, id_proprietaire, id_race)
SELECT
'Rantanplan',
'12',
(SELECT id_proprietaire FROM proprietaires WHERE proprietaire = 'Jean Dupont'),
(SELECT id_race FROM races WHERE race = 'berger allemand');
Message édité par saint malo le 14-06-2015 à 03:38:15