HomeHomeTechniqueTechniqueDéveloppement S...Développement S...SQL 2008 et la clause ORDER BYSQL 2008 et la clause ORDER BY
Précédente
 
Suivante
Nouveau message
19/04/2010 11:12
 

Bonjour,

voilà mon problème

une vue [LISTE_PAYS] :
SELECT [id_Pays], [NomPays], [Capitale] FROM [T_PAYS] PRDER BY [NomPays]

sous SQL 2000,SELECT * FROM [LISTE_PAYS]  renvoi bien la liste des pays trié

sous SQL 2005 ou 2008,SELECT * FROM [LISTE_PAYS]  renvoi bien la liste des pays mais non trié


Microsoft a sorti un patch

http://support.microsoft.com/kb/926292

cependant, imposible de l'installer, il me dit que mon instance est à jour

or j'ai toujours le problème.

 

Cordialement

JP

 

 
Nouveau message
19/04/2010 12:03
 

En fait, ce fonctionnement est tout à fait normal : une vue ne peut avoir un tri des données effectué dans son code par un ORDER BY (sauf pour une utilisation de la clause TOP). En effet, vous pourriez demander un autre ordre dans la requête appelante : SELECT * from ma_vue ORDER BY mon_autre_colonne

La documentation en ligne indique bien pour le CREATE VIEW : "La clause ORDER BY est utilisée uniquement pour déterminer les lignes retournées par la clause TOP dans la définition de la vue. La clause ORDER BY ne garantit pas des résultats classés lorsque la vue est interrogée, sauf si ORDER BY est également spécifiée dans la requête proprement dite."

Ce qui veut dire que vous devez utiliser la clause ORDER à l'extérieur de la vue, dans la requête appelante... le correctif n'apporte rien à ce problème.


Arian (Modérateur) MCSE-MCT-MCDBA-MCITP
 
Précédente
 
Suivante
HomeHomeTechniqueTechniqueDéveloppement S...Développement S...SQL 2008 et la clause ORDER BYSQL 2008 et la clause ORDER BY