|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() |
Bonjour à tous,
J'arrive pas a exécuter une requette SQL interbase contenat une clause ORDER BY avec UNION : Code :
- la clause ORDER BY est utilisée à la fin de la requette NB. Sans ORDER BY, la requette s'execute sans problème. |
||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Faute de frappe sans doute, Il faut éviter les select * ensuite pour ce qui est du tri suite à un union il faut lui indiquer non pas le nom de la colonne mais son numéro. Code :
Code :
C'est d'ailleur recommandé de le faire pour éviter un double traitement (Le tri de l'union puis le tri de l'order by (si celui ci est un order by n avec n>1)). Pour un "UNION ALL" il faudra par contre utiliser le order by x pour trier le résultat. |
||||
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() |
Code :
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
||
|
|
00
|
|
|
#4 | |||||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
1- qu'apporterait de plus cette solution par rapport à un simple Code :
2- De plus les sous select n'étant pas autorisés avec Interbase/Firebird celà ne fonctionnera pas. |
|||||
|
|
00
|
|
|
#5 |
![]() ![]() ![]() |
Ah !
Je ne me rendais plus compte qu'Interbase était encore à l'âge de la pièrre taillée alors que même mysql s'en est tiré de cette situation.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Ce n'est pas très diplomate de venir dans le forum Interase/Firebird pour dire que c'est un "SGBD de l'age de pierre".
MySQL sait il exécuter des procédures stoquées ? sait il gérer les triggers ? Gère t il le versionning des enregistrements ? Entre autres questions... Le SGBD parfait n'existe pas, il faut choisir celui qui convient le plus à ses besoins et affinitées. Pour faire des sous select avec interbase/Firebird c'est assez simple en utilisant les vues ou dans une procédure stoquées. Mais vous n'avez pas répondu à ma première question ??? Qu'apporte de plus votre solution ? Enfin je pose la question, mais pour être honnete, je connais la réponse |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() |
Vous voyez très bien que dans votre requête, le resultat est l'union du premier select + le deuxième avec le fait le resultat du deuxième est trié.
Par contre, dans ma version, Le resultat de l'union est trié sur le champ 1. Vous vous rendez vraiment compte que c'est different sinon éclairer moi maître Barbibulle !
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
C'est là que vous faites erreur, le order by se réfère à l'ensemble de l'union.
http://sql.developpez.com/sqlaz/ensembles/#L3.4.4 En d'autre terme quand il y a un UNION, il ne peut y avoir qu'un seul ORDER BY et il se trouve à la fin. Il ne se réfère pas au dernier select mais au résultat de l' (ou des) union(s). Ma requete va bien trier comme il le faut. Et la votre donne le même résultat sur un SGBD qui accepte les sous select mais l'écriture est plus lourde et probablement moins performante. |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() |
sauf qu'ici il s'agit d'un Order by mais pas un group by.
A mois que ca soit la même chose ?
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Désolé il faut lire dans mon message précédent ORDER BY et non GROUP BY. Merci de la remarque, je vais éditer mon message pour éviter les confusions.
|
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() |
Merci à tous ceux qui m'ont répendu,
Je m'excuse pour l'erreur de frappe fichier2. J'est utilisé la solution de vue proposé dans le forum et ça à marcher. Merci Barbecule j'ai utilisé aussi ta solution qui est plus simple. Merci encore. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com