Code : SQL
-----------------------------------SELECT Animal.id, Animal.nom, Espece.nom_courant
-- 3 colonnes sélectionnées
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat'
UNION
SELECT Animal.id, Animal.nom, Espece.nom_courant, Animal.espece_id -
- 4 colonnes sélectionnées
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann';
Code : Console
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Type et ordre des colonnes
En ce qui concerne le type des colonnes, je pense vous avoir déjà signalé que MySQL est très (vraiment très) permissif. Par
conséquent, si vous sélectionnez des colonnes de différents types, vous n'aurez pas d'erreurs, mais vous aurez des résultats un
peu… spéciaux.
Prenons la requête suivante :
Code : SQL
SELECT Animal.id, Animal.nom, Espece.nom_courant
-- 3e colonne :
nom_courant VARCHAR
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat' AND Animal.nom LIKE 'C%'
UNION
SELECT Animal.id, Animal.nom, Espece.id
-- 3e colonne :
id SMALLINT
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann' AND Animal.nom LIKE
'C%';
Vous aurez bien un résultat :
id
nom
nom_courant
5 Choupi Chat
33 Caribou Chat
34 Capou
Chat
37 Callune Chat
43 Cracotte Chat
44 Cawette Chat
Partie 2 : Index, jointures et sous-requêtes
130/414
www.openclassrooms.com
-----------------------------------SELECT Animal.id, Animal.nom, Espece.nom_courant
-- 3 colonnes sélectionnées
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat'
UNION
SELECT Animal.id, Animal.nom, Espece.nom_courant, Animal.espece_id -
- 4 colonnes sélectionnées
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann';
Code : Console
ERROR 1222 (21000): The used SELECT statements have a different number of columns
Type et ordre des colonnes
En ce qui concerne le type des colonnes, je pense vous avoir déjà signalé que MySQL est très (vraiment très) permissif. Par
conséquent, si vous sélectionnez des colonnes de différents types, vous n'aurez pas d'erreurs, mais vous aurez des résultats un
peu… spéciaux.
Prenons la requête suivante :
Code : SQL
SELECT Animal.id, Animal.nom, Espece.nom_courant
-- 3e colonne :
nom_courant VARCHAR
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat' AND Animal.nom LIKE 'C%'
UNION
SELECT Animal.id, Animal.nom, Espece.id
-- 3e colonne :
id SMALLINT
FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann' AND Animal.nom LIKE
'C%';
Vous aurez bien un résultat :
id
nom
nom_courant
5 Choupi Chat
33 Caribou Chat
34 Capou
Chat
37 Callune Chat
43 Cracotte Chat
44 Cawette Chat
Partie 2 : Index, jointures et sous-requêtes
130/414
www.openclassrooms.com
