IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Order by, top(100) Percent et vue dans SQL server 2005


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut Order by, top(100) Percent et vue dans SQL server 2005
    Hello,

    j'ai un problème étrange :

    je fais une nouvelle vue avec Management Studio, une vue toute simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table.*
    FROM Table
    je veux trier par "machin" alors j'ajoute Management Studio m'ajoute alors automatiquement , je vois pas pourquoi mais bon ...

    On a donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP (100) PERCENT Table.*
    FROM Table
    ORDER BY table.machin
    je teste ça marche ok, j'enregistre ok.

    Mais quand j'ouvre la vue, c'est pas classé...

    je suis perdu, merci de m'aider...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[VW_maview]'))
    DROP VIEW [dbo].[VW_maview]
    GO
     
    CREATE VIEW [dbo].[VW_maview] AS
    SELECT *
    FROM   matable
    ORDER BY machin ASC
    GO

  3. #3
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Pas mal comme idée...

    Mais c'est pas ça. Le problème se situe à l'execution de la requète.

    apparament ça s'execute pas pareil dans le concepteur (là c'est bien) que dans ouvrir la vue...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Alors il faudrait vérifier les index de la page. Il en existe p-e un qui force un ordre quelconque.

  5. #5
    Membre régulier
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    Ok,peux-tu me dire comment faire ? Merci de ton aide

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT TOP 1000 *
    INTO _temp_table
    FROM matable
    GO
     
    IF EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[VW_maview]'))
    DROP VIEW [dbo].[VW_maview_temp]
    GO
     
    CREATE VIEW [dbo].[VW_maview_temp] AS
    SELECT *
    FROM _temp_table
    ORDER BY machin ASC
    GO

    Appelle les deux views. Si le l'ordre des résultats est différent, c'est que ta structure influence l'output.

    Pour voir les index, tu peux les lister dans l'interface sous le node Indexes sous la table.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour,
    avec SQL 2005 le top (100) percent ne fonctionne pas. Pour contourner il faut mettre top (4000000) ou une autre valeur en fonction de la taille de la requète.
    C'est pas génial mais ça fonctionne.

    Bonne journée

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 865
    Points : 53 018
    Points
    53 018
    Billets dans le blog
    6
    Par défaut
    C'est surtout que 100% ne veut rien dire. Que faites vous des lignes ex aequo en fin de liste ?

    Donc il faut faire un
    TOP 100 PERCENT WITH TIES

    A +

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    merci SQLPRO car je magouillais alors qu'il y avait une solution propre.
    Dommage que SQL server management ne crée pas cela automatiquement.

    Bonne journée

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    bon je sais que je ressort ce vieux sujet, mais comme il m'a aidé il peut encore aider.

    En fait j'ai trouvé un truc plus simple,

    Dans le SQL Server Management Studio lorsque tu edite ta vue, dans properties, tu peux modifier le "Top Specification" pour le définir a "NO" ainsi il met plus le TOP (100) Percent

    Perso j'ai fait ca.

    Cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. apport des vues dans sql server ?
    Par hbib85 dans le forum Optimisations
    Réponses: 2
    Dernier message: 25/03/2009, 22h13
  2. Réponses: 3
    Dernier message: 09/06/2007, 15h22
  3. Comment supprimer "accent sensitive" dans sql server 2005
    Par ozzy75 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/05/2007, 09h28
  4. PB Accès schémas BDD dans sql server 2005
    Par tikam dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/06/2006, 08h42
  5. Restaurer dans sql server 2005
    Par tikam dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/06/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo