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

Requêtes MySQL Discussion :

Trier une table ?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut Trier une table ?
    Bonjours à tous,

    J'ai une table mysql qui se présente comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ID   POSITION  ...
    1        1
    2        2
    3        5
    6        8
    7        9
    9        11
    Et j'aimerai pouvoir trier la table de maniere à obtenir cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ID  POSITION ...
    1       1
    2       2
    3       3
    6       4
    7       5
    9       6
    C'est à dire que les positons doivent etres croissantes et sans "trous"
    J'ai éssayé plusieurs méthodes mais aucune ne fonctionne correctement

    Pourriez-vous m'aider à résoudre ce petit probleme ?
    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Salut,

    Es-tu sûr que tu veux un tri ? En regardant ton exemple, ça ressemble plus à une renumérotation.

    Si c'est le cas, voici une solution qui incrémente une variable à chaque ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET @pos = 0;
     
    SELECT id , @pos := @pos+1 AS position, 
    FROM t
    ORDER BY id;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Oui effectivement c'est plus une renumérotation

    Je n'ai pas éssayé ta requete mais je croit que les variables sql ne sont compatibles qu'avec mysql et cela sera handicapant si je veux changer de bdd, y'aurait il une autre méthode ?

  4. #4
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par orochimaru
    Je n'ai pas éssayé ta requete mais je croit que les variables sql ne sont compatibles qu'avec mysql et cela sera handicapant si je veux changer de bdd, y'aurait il une autre méthode ?
    En effet, la syntaxe n'est pas forcément la même avec les autres SGDB. Mais la plupart gère les variables.

    Une autre méthode ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t1.id, (SELECT COUNT(*) + 1 FROM ta_table t2 WHERE t1.id > t2.id) AS pos     
    FROM ta_table t1
    ORDER BY t1.id;
    Il y a sûrement moyen de réécrire ça avec un produit cartésien et un group by.

  5. #5
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par Biglo
    Il y a sûrement moyen de réécrire ça avec un produit cartésien et un group by.
    Voilà, ça devrait le faire. Mais ça suppose que COUNT() gère les NULL de la même façon dans les autres SGBD... à vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t1.id, COUNT(t2.id) + 1
    FROM num t1 LEFT JOIN num t2 ON t1.id > t2.id
    GROUP BY t1.id

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

Discussions similaires

  1. trier une table paradox
    Par sabrina22 dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2006, 17h32
  2. Comment trier une table paradox dans un Ttable sur un Dbgrid
    Par amireve dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/12/2005, 19h28
  3. Trier une table .db paradox
    Par James64 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/10/2005, 11h01
  4. Trier une table avec valeur de differentes unités
    Par Sydaze dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2005, 11h43
  5. [VB.NET] Trier une table de mon DataSet
    Par San Soussy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/03/2005, 17h30

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