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 :

Equvalent LIMIT en Sql Server


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Par défaut Equvalent LIMIT en Sql Server
    Bonjour ,

    je cherche l'equvalent de la clause LIMIT(debu,nombre) qui est disponible ds mysql pour selectionner le 'nombre' des lignes des resultats a partir de la ligne 'debut' ?

    je notte que pour la clause TOP(nombre) dans Transact Sql ,ya pas la notion debut...

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Tu peux t'en sortir avec une fonction de fenêtrage : RANK() OVER (PARTITION)

    Cherche la fonction RANK() dans l'aide en ligne.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Par défaut RANk
    Merci sur ta reponse..

    tu peut detailler en peu... un exemple .. /?

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    En fait, pour ton LIMIT, ROW_NUMBER(), une autre fonction de fenêtrage, convient mieux.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT TOP 10 * FROM (SELECT
       ROW_NUMBER() OVER (ORDER BY LastName, FirstName) AS RowNumber,
       *
    FROM
       dbo.Customers) c
    WHERE
       RowNumber > 10
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * FROM (SELECT
       ROW_NUMBER() OVER (ORDER BY LastName, FirstName) AS RowNumber,
       *
    FROM
       dbo.Customers) c
    WHERE
       RowNumber BETWEEN 10 AND 20

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Par défaut Resolu
    Bonjour
    voici une soulition :

    select * from
    (select top(2) * from
    (select top(13+2) * from user order by idASC) as tbl1
    order by id desc) as tbl2 order by idUser ASC
    <========>

    select * from user LIMIT(2,13)

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Par défaut
    Merci à tous,
    finallement j'ai repris l'exemple de Khadir.
    SQLPRO, si tu pourrais expliqué ton idée, cela serai interessant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select  Projectname,Filename,TMPname,SPname,Hour_start,Hour_end,enable,isnull (Comment,'') Comment,
    -- give the received time for 2 last files
    (select top 1 received from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) Last_file,
    (select top 1 received from (select top 2 received from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) t1 order by received) prev_file,
    -- give the number of rows in the temp table for 2 last files
    (select top 1 rows from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) Last_rows_tmp,
    (select top 1 rows from (select top 2 received,rows from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) t1 order by received) prev_rows_tmp,
    -- give the number of rows in the temp table for 2 last files
    (select top 1 status from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) Last_status,
    (select top 1 status from (select top 2 received,status from db_inject_hist dih where  DID.DID_id=DIH.DIH_ID_DID order by received desc ) t1 order by received) prev_status
     
    from DB_inject_data did

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

Discussions similaires

  1. [SQL-Server] limit en sql-server
    Par kaking dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/07/2012, 08h44
  2. y a t-il qqc comme LIMIT ds sql server
    Par tajajtsidi dans le forum Développement
    Réponses: 2
    Dernier message: 09/07/2009, 18h42
  3. [SQL SERVER] limiter resultat
    Par alexischmit dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/09/2008, 12h50
  4. simulation limit sur SQL server
    Par anatole44 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/10/2007, 16h20
  5. [SQL Server] Limiter le resultat d'une requête
    Par obiwan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/06/2004, 11h25

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