ORDER BY
Par contre, s'il est possible de trier le résultat final d'une requête avec UNION, on ne peut pas trier les résultats des requêtes
intermédiaires. Par exemple, cette requête trie bien les résultats par ordre anti-alphabétique du nom :
Code : SQL
SELECT id, nom, 'Race' AS table_origine FROM Race
UNION
SELECT id, nom_latin, 'Espèce' AS table_origine FROM Espece
ORDER BY nom DESC;
Il faut bien mettre ici ORDER BY nom, et surtout pas ORDER BY Race.nom ou ORDER BY
Espece.nom_latin. En effet, l'ORDER BY agit sur l'ensemble de la requête, donc en quelque sorte, sur une table
intermédiaire composée des résultats des deux requêtes unies. Cette table n'est pas nommée, et ne possède que deux
colonnes : id et nom (définies par la première clause SELECT rencontrée).
id
nom
table_origine
3 Testudo hermanni
Espèce
7 Sphynx
Race
6 Singapura
Race
8 Nebelung
Race
5 Maine coon
Race
2 Felis silvestris
Espèce
1 Canis canis
Espèce
3 Boxer
Race
4 Bleu russe
Race
2 Berger blanc suisse
Race
1 Berger allemand
Race
4 Alipiopsitta xanthops Espèce
Vous pouvez bien sûr combiner LIMIT et ORDER BY.
Code : SQL
(SELECT id, nom, 'Race' AS table_origine FROM Race LIMIT 6)
UNION
(SELECT id, nom_latin, 'Espèce' AS table_origine FROM Espece LIMIT
3)
ORDER BY nom LIMIT 5;
id
nom
table_origine
4 Alipiopsitta xanthops Espèce
1 Berger allemand
Race
2 Berger blanc suisse
Race
4 Bleu russe
Race
Partie 2 : Index, jointures et sous-requêtes
134/414
www.openclassrooms.com
Par contre, s'il est possible de trier le résultat final d'une requête avec UNION, on ne peut pas trier les résultats des requêtes
intermédiaires. Par exemple, cette requête trie bien les résultats par ordre anti-alphabétique du nom :
Code : SQL
SELECT id, nom, 'Race' AS table_origine FROM Race
UNION
SELECT id, nom_latin, 'Espèce' AS table_origine FROM Espece
ORDER BY nom DESC;
Il faut bien mettre ici ORDER BY nom, et surtout pas ORDER BY Race.nom ou ORDER BY
Espece.nom_latin. En effet, l'ORDER BY agit sur l'ensemble de la requête, donc en quelque sorte, sur une table
intermédiaire composée des résultats des deux requêtes unies. Cette table n'est pas nommée, et ne possède que deux
colonnes : id et nom (définies par la première clause SELECT rencontrée).
id
nom
table_origine
3 Testudo hermanni
Espèce
7 Sphynx
Race
6 Singapura
Race
8 Nebelung
Race
5 Maine coon
Race
2 Felis silvestris
Espèce
1 Canis canis
Espèce
3 Boxer
Race
4 Bleu russe
Race
2 Berger blanc suisse
Race
1 Berger allemand
Race
4 Alipiopsitta xanthops Espèce
Vous pouvez bien sûr combiner LIMIT et ORDER BY.
Code : SQL
(SELECT id, nom, 'Race' AS table_origine FROM Race LIMIT 6)
UNION
(SELECT id, nom_latin, 'Espèce' AS table_origine FROM Espece LIMIT
3)
ORDER BY nom LIMIT 5;
id
nom
table_origine
4 Alipiopsitta xanthops Espèce
1 Berger allemand
Race
2 Berger blanc suisse
Race
4 Bleu russe
Race
Partie 2 : Index, jointures et sous-requêtes
134/414
www.openclassrooms.com
