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 :

[Requête] sortir seulement un bloc d'enregistrement


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut [Requête] sortir seulement un bloc d'enregistrement
    Bonjour à tous,

    J'ai besoin de monter une requête qui me sortirait un bloc d'enregistrements. Je connais déjà la fonction "top" qui sort les enregistrements du haut... mais quoi faire si je veux que ma requête me sorte 4 enregistrements à partir du 4ème?

    exemple:

    Voici une table que j'ai. Je voudrais faire une requête qui me permettrais de sortir les enregistrements 4 à 8.

    id nom prenom
    1 Un Nom
    2 Un Nom
    3 Un Nom
    4 Un Nom
    5 Un Nom
    6 Un Nom
    7 Un Nom
    8 Un Nom
    9 Un Nom
    10 Un Nom



    Est-ce que ça a du sens ce que je dis? Si vous ne comprenez pas, n'hésiter pas à poser des questions.

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Par défaut
    Bonjour,

    Dans une base de donnée, il n'y a pas de notion d'ordre (donc aucun élément n'est marqué quelque part comme étant le premier, le dernier ou le quatrième).

    Citation Envoyé par SQLPro
    Une table est un sac de bille. Si vous recevez mon sac de bille, avez-vous un moyen quelconque de savoir quelle a été la dernière bille que j'y ai fourrée ?
    Par contre, tu peux construire une requête en utilisant la clé de la colonne (ou un critère donné si ta table est triée).

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Citation Envoyé par King Kaiser
    Par contre, tu peux construire une requête en utilisant la clé de la colonne (ou un critère donné si ta table est triée).
    Justement, ma table est trié elle me sort des résultats dans un ordre précis... comme dans l'exemple...

    Sauf que j'aimerais que la requête me sorte seulement un bloc dans cette "liste" de résultat.

    comme pour l'exemple que j'ai donné, j'aimerais que la requête me
    sorte :

    5 Un Nom
    6 Un Nom
    7 Un Nom
    8 Un Nom

    Donc, qu'elle saute les 4 premiers et que ensuite elle me donne les 4 suivants.

    C'est exactement comme l'attribut "top" dans "SELECT TOP 4 * FROM tbl_guguss ORDER BY id_guguss DESC"

    "TOP 4" va me sortir les 4 résultats en haut de la liste... je voudrais avoir ce même comportement, mais localisé à un endroit précis.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    J'ai cherché un peu et je crois qu'en MySQL la fonction équivalente pour faire ce que je veux est "LIMIT"

    du genre : "SELECT * FROM MYTABLE LIMIT 4 OFFSET 4"

    ça vous dit quelque chose?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Bon, en fouillant plus, j'ai enfin trouvé quelque chose. En fait, il n'existe pas d'équivalent direct à l'argument "LIMIT" de MySQL en SQL Server.

    Mais il existe un moyen de simuler cette fonction, voici comment j'ai fait:
    Requête originale qui me sort tous les résultats:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Organismes.id,article,nom 
    FROM Organismes,organismes_referencement,categories
    WHERE actif=1  and organismes_referencement.id_organismes=organismes.id and organismes_referencement.id_thematique=categories.id and organismes_referencement.id_thematique='2124'  and categories.id_arrondissement=1 and organismes_referencement.id_organismes=organismes.id
    ORDER BY nom ASC
    Requête modifiée qui me sort seulement les résultats dont j'ai besoin:
    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 *
    FROM
    (
    	SELECT TOP 20 *
    	FROM
    	(
    		SELECT TOP 40 Organismes.id,article,nom
    		FROM Organismes,organismes_referencement,categories
    		WHERE actif=1  and organismes_referencement.id_organismes=organismes.id and organismes_referencement.id_thematique=categories.id and organismes_referencement.id_thematique='2124'  and categories.id_arrondissement=1 and organismes_referencement.id_organismes=organismes.id
    		ORDER BY nom DESC
    	) AS t1
    	ORDER BY nom
    ) AS t2
    ORDER BY nom ASC
    Si vous voulez plus d'explication sur cette requête, ne vous gênez pas.
    En espérant en aider d'autre. a+

    Sébastien

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/03/2007, 15h30
  2. Réponses: 11
    Dernier message: 19/09/2006, 09h34
  3. Réponses: 1
    Dernier message: 08/09/2006, 15h56
  4. Réponses: 2
    Dernier message: 28/04/2006, 22h56
  5. [MySQL] Requête qui ne retourne qu'un enregistrement
    Par krfa1 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/04/2006, 06h55

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