Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 11h38   #1
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Par défaut Problème TOP SQL Server 2000

Bonjour,

je travaille sur sql server 2000 et pour réaliser une pagination au résultats rendu par une requête j'ai vu que je doit utiliser l'instruction TOP.
Ce code:
Code :
SELECT TOP 5 * FROM matable
me rend une erreur Server: Msg 170, Level 15, State 1, et à ce que j'ai compris qu'il ne connait pas l'instruction TOP.
merci pour votre aide.
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 11h46   #2
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Peux-tu poster toute la totalité de la requête que tu as lancé ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h09   #3
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 745
Points : 9 745
Essaye peut être :

Code :
SELECT TOP( 5) * FROM matable
Accessoirement, avec Sql Server 2000, l'argument à l'option TOP doit être literal et ne peut pas être contenu dans une variable. (même si ce n'est pas le cas de ton exemple supra).
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h12   #4
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Salut etienne,

voici la requête:
Code :
1
2
3
4
5
6
7
8
9
SELECT * FROM ( 
   SELECT TOP 5 * FROM ( 
    SELECT TOP 10 *
    FROM matable 
    WHERE monchamp="machaine"
    ORDER BY id_table ASC 
   ) 
   tbl1 ORDER BY id_table DESC
  ) AS tbl2 ORDER BY id_table ASC
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h25   #5
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
La syntaxe du premier post est tout à fait normale.
Je ne comprends pas le "pour réaliser une pagination au résultats rendu par une requête" ??

EDIT : Il nous faudrait aussi le retour d'erreur complet du moteur.
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h28   #6
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Essaye ceci

Code :
1
2
3
4
5
6
7
8
9
SELECT * FROM ( 
   SELECT TOP 5 * FROM ( 
    SELECT TOP 10 *
    FROM matable 
    WHERE monchamp= 'machaine'
    ORDER BY id_table ASC 
   ) 
   tbl1 ORDER BY id_table DESC
  ) AS tbl2 ORDER BY id_table ASC

Et encore plus simple

Code :
1
2
3
4
5
 
    SELECT TOP 5 * 
    FROM matable 
    WHERE monchamp = 'machaine'
    ORDER BY id_table ASC
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h37   #7
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
salut,

en tapant votre requête zinzineti j'ai ce message d'erreur.
Code :
1
2
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near '5'.
@Jinroh77: Je voudrais récupérer le résultat de ma requéte par groupe de 5 pour pagination et en plus normalment ça baisse le temps d'éxecution de la requête.

Merci d'avance.
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h43   #8
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Tu parles de cette requête ?

Code :
1
2
3
4
SELECT TOP 5 * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 14h47   #9
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Citation:
Envoyé par mino26tz Voir le message
@Jinroh77: Je voudrais récupérer le résultat de ma requéte par groupe de 5 pour pagination et en plus normalment ça baisse le temps d'éxecution de la requête.
Merci d'avance.
Bizarre cette idée, et bizarre de se dire que ça peut optimiser quoique ce soit...
Dès qu'un top ou un order est utilisé il y a écriture dans la tempDB de l'instance pour pouvoir trier les données...
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/12/2010, 14h56   #10
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Citation:
Envoyé par zinzineti Voir le message
Tu parles de cette requête ?

Code :
1
2
3
4
SELECT TOP 5 * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
oui c'est bien cette requête.
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h11   #11
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Si vous avez envie de perdre du temps continuer d'exécuter

Code :
1
2
3
4
SELECT TOP '5' * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
vous aurez toujours l'erreur suivante

Citation:
Serveur : Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '5'.

A+
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h21   #12
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Citation:
Envoyé par zinzineti Voir le message
Si vous avez envie de perdre du temps continuer d'exécuter

Code :
1
2
3
4
SELECT TOP '5' * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
vous aurez toujours l'erreur suivante




A+
re Zezinette avec ouo sans côte (TOP 5 ou TOP '5')l'instruction top n'est pas reconnu.

Merci d'avance.
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h24   #13
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 770
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 770
Points : 1 833
Points : 1 833
Vous êtes sur que vous êtes bien sur une instance Microsoft SQL Server 2000 ???
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h29   #14
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
@Jinroh77 oui c'est bien sql server 2000. j'éxecute mes requêtes sur Microsoft SQL Enterprise Manager

Microsoft Corporation

Version*: 8.0

Merci d'avance

ce que je veux faire c'est exactement ça:http://sqlserver.developpez.com/faq/?page=Jeu#Jeu1
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h32   #15
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Que donne ceci :

Code :
1
2
3
4
5
SET ROWCOUNT 5
SELECT * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h42   #16
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Est ce que vous lancez cette requete seule ou est elle incluse dans une procedure avec d'autres instructions ?

A l'occasion que donne la commande suivante :

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h44   #17
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Citation:
Envoyé par zinzineti Voir le message
Que donne ceci :

Code :
1
2
3
4
5
SET ROWCOUNT 5
SELECT * 
FROM matable 
WHERE monchamp = 'machaine'
ORDER BY id_table ASC
Elle me retourne les 5 premières lignes, mais ce que je veux c'est qu'elle me retourne les 5 première ligne puis de 5 à 10 ..etc.


Mon but c'est de réaliser une pagination type Limit 0,5 dans MySQL.
(http://sqlserver.developpez.com/faq/?page=Jeu#Jeu1)

Merci d'avance
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h46   #18
Invité régulier
 
Inscription : novembre 2007
Messages : 73
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 73
Points : 6
Points : 6
Citation:
Envoyé par mikedavem Voir le message
Est ce que vous lancez cette requete seule ou est elle incluse dans une procedure avec d'autres instructions ?

A l'occasion que donne la commande suivante :

++

Code :
Microsoft SQL Server  2000 - 8.00.760 (Intel X86)   Dec 17 2002 14:22:05   Copyright (c) 1988-2003 Microsoft Corporation  Developer Edition ON Windows NT 5.2 (Build 3790: Service Pack 1)
mino26tz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h53   #19
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Vous n'avez pas répondu à la question de Mikedavem
Citation:
Est ce que vous lancez cette requete seule ou est elle incluse dans une procedure avec d'autres instructions ?
Est ce que vous exécuter votre requête de façon dynamique (SQL dynamique)?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h55   #20
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Ok.

Une question bete .. vous faites cela depuis entreprise manager apparemment mais avez vous essaye depuis SQL Query analyzer ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h16.


 
 
 
 
Partenaires

Hébergement Web