on ne peut pas mettre de clé étrangère sur une table temporaire ;
on ne peut pas faire référence à une table temporaire deux fois dans la même requête.
Quelques explications sur la deuxième restriction : lorsque l'on parle de "faire référence deux fois à la table", il s'agit d'aller
chercher des données deux fois dans la table. Le nom de la table temporaire peut apparaître plusieurs fois dans la requête, par
exemple pour préfixer le nom des colonnes.
Exemples : on recrée une table TMP_Animal, un peu plus complexe cette fois, qu'on remplit avec les chats de la table Animal.
Code : SQL
CREATE TEMPORARY TABLE TMP_Animal (
id INT UNSIGNED PRIMARY KEY,
nom VARCHAR(30),
espece_id INT UNSIGNED,
sexe CHAR(1),
mere_id INT UNSIGNED,
pere_id INT UNSIGNED
);
INSERT INTO TMP_Animal
SELECT id, nom, espece_id, sexe, mere_id, pere_id
FROM Animal
WHERE espece_id = 2;
1. Référence n'est pas occurrence
Code : SQL
SELECT TMP_Animal.nom, TMP_Animal.sexe
FROM TMP_Animal
WHERE nom LIKE 'B%';
nom
sexe
Bagherra M
Boucan M
Boule
F
Bilba
F
Bambi
F
Ici, TMP_Animal apparaît trois fois dans la requête. Cela ne pose aucun problème, puisque la table n'est utilisée qu'une fois pour
en extraire des données : dans le FROM.
2. Auto-jointure
On essaye d'afficher le nom des chats, ainsi que le nom de leur père quand on le connaît.
Code : SQL
SELECT TMP_Animal.nom, TMP_Pere.nom AS pere
FROM TMP_Animal
INNER JOIN TMP_Animal AS TMP_Pere
ON TMP_Animal.pere_id = TMP_Pere.id;
Partie 6 : Au-delà des tables classiques : vues, tables temporaires et vues matérialisées
355/414
www.openclassrooms.com
Précédent

- 355/413

Suivant