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

Langage SQL Discussion :

Algo de tri, extension


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 64
    Points : 57
    Points
    57
    Par défaut [Resolu]Algo de tri, extension
    SGBD : SQL SERVER 7
    bonjour,
    il faudrais que j'ellargisse la procedure que m'a ecris SQLPro dans un precedent post.

    en fait j'ai ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    id      position 
    12          4
    18          8
    3          9
    4          10
    5          12
    et il faudrait que j'ecrive une procedure qui mes a jour le champs position en commencant par 1 et donc obtenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    id      position 
    12          1
    18         2
    3          3
    4          4
    5          5
    J'ai essayer avec les curseur, mais pour une raison que j'ignore, il ne veux pas parcourir l'ensemble des enregsitrement lorsque je met a jours l'une des lignes.

    merci pour voter aide

  2. #2
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 64
    Points : 57
    Points
    57
    Par défaut
    J'ai trouve....
    Voila ma solution avec un curseur.
    Je sais pas trop si il vaut mieux utiliser des curseurs, ou bien que du code sql "pure"... Lequel est le plus rapide/performant/normalise...

    Merci SQLPro, ton site est vraiment excellent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    DECLARE @id int, @i int
    DECLARE @CodeSQL VARCHAR(250) 
     
    DECLARE MyCursor CURSOR 
    		FOR 
    		SELECT id 
    		FROM tbl_items_list_general
    		ORDER BY priority
     
    OPEN MyCursor 
    -- lecture du premier enregistrement 
     
    FETCH MyCursor INTO @id
     
     
    SET @i=1
    -- boucle de traitement 
    WHILE @@fetch_Status = 0 
    	BEGIN 
     
    		SET @CodeSQL = 'UPDATE tbl_items_list_general SET priority = ' + CAST(@i AS varchar(10)) + ' WHERE id = ' + CAST(@id AS varchar(10)) 
    		EXEC (@CodeSQL)
    		FETCH MyCursor INTO @id		
    		SET @i=@i+1		
     
    	END 
     
    CLOSE myCursor 
     
    -- libération de la mémoire 
    DEALLOCATE myCursor

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Inutile d'utiliser un curseur et une proc stock...

    Une simple requête suffit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE MyTable
    SET    Position = (SELECT (SELECT MIN(Position) FROM MyTable) - COUNT(T2.id) +1
                               FROM   MyTable T1
                               LEFT   OUTER JOIN MyTable T2
                                      ON T1.Position < T2.Position
                               WHERE  T1.Position = T.Position
                               GROUP  BY T1.Position)
    FROM   MyTable T
    Je posterait aussi celle là dans ma rubrique puzzle !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Une requête est toujours BEAUCOUP, BEAUCOUP, BEAUCOUP plus rapide que du code, même en proc stock...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre du Club
    Inscrit en
    Juin 2002
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 64
    Points : 57
    Points
    57
    Par défaut
    pas grand chose a dire






    Merci
    t'es vraiment trop fort, et moi je dois mieux penser mes requetes.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    En fait il faut prendre l'habitude de raisonner en termes ensembliste et non plus en terme procédurale.

    C'est un mécanisme facile à acquérir avec le truc du sac de bille...

    Souvient toi des "patates" ou diagramme de Venn...

    Bien entendu je délivre des formations sur le sujet...
    Si cela t'intéresse, mail moi en privé !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Algo de tri
    Par Tuxico dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 04/01/2006, 14h49
  2. Algo de tri par liste chainée
    Par Treuze dans le forum C
    Réponses: 3
    Dernier message: 30/12/2005, 14h05
  3. algo de tri gérant les exaequo
    Par tomy29 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 13/10/2005, 13h54
  4. quel est le meilleur algo de tri de liste ?
    Par sony351 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/07/2005, 02h00
  5. algo de tri
    Par el toro diablo dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 05/11/2003, 08h43

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