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

 MySQL Discussion :

mySQL ORDER BY ordre chronologique de saisie


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut mySQL ORDER BY ordre chronologique de saisie
    Bonjour à tous,

    J'avais cru comprendre que, par défaut, les lignes d'une table s'affichaient par ordre chronologique de saisie.

    Cela ne semble pas se vérifier pour ma table :

    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
    CREATE TABLE IF NOT EXISTS versionDoc (
      idVersionDoc varchar(3) NOT NULL,
      nomVersionDoc_fr varchar(255) NOT NULL,
      nomVersionDoc_en varchar(255) NOT NULL,
      CONSTRAINT pk_versionDoc
    		PRIMARY KEY (idVersionDoc)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
     
    --
    -- Contenu de la table versionDoc
    --
     
    INSERT INTO versionDoc (idVersionDoc, nomVersionDoc_fr, nomVersionDoc_en) VALUES
    ('fra' , 'française' , 'French'),
    ('ang' , 'anglaise' , 'English'),
    ('mus' , 'musique seule' , 'Music only'),
    ('ssd' , 'sans dialogues' , 'No dialog'),
    ('por' , 'portugaise' , 'Portuguese'),
    ('esp' , 'espagnole' , 'Spanish'),
    ('all' , 'allemande' , 'German'),
    ('tch' , 'tchèque' , 'Czech'),
    ('chi' , 'chinoise' , 'Chinese'),
    ('rus' , 'russe' , 'Russian');
    Qd je l'affiche dans une checkbox, elle se classe par ordre alphabétique sur l'idVersionDoc alors que je voudrais que français et anglais s'affichent en premier.

    Ma seule solution est-elle d'ajouter une colonne numOrdreVersionDoc pour faire un ORDER BY sur cette colonne ?

    Merci d'avance de vos conseils

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Les lignes d'une table MySQL sont comme des billes dans un sac, une fois dans le sac, on ne sait plus dans quel ordre elles y ont été insérées.
    Sauf à créer des index pour les classer selon les critères qui t'agréent.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Merci pour ta réponse Maljuna Kris

    Par contre, comme je n'ai jamais utilisé les index, je suis allé me renseigner à droite et à gauche, et voici ce que je lis ici :

    "Inutile de rajouter un index de type « INDEX » ou encore « UNIQUE » sur un champ qui est déjà clé primaire par exemple… Vous dupliqueriez inutilement les index avec à la clé un gaspillage d’espace disque/mémoire, des ralentissements inutiles lors des mises à jour, davantage de travail pour l’optimiseur…"

    Donc, comme j'ai sur cette table une primary et que je me sers de cette primary comme foreign sur une autre table, je ne sais pas trop si ta solution convient.

    Si tu penses que si, pourrais-tu m'indiquer comment je dois procéder ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Pour ce que tu veux faire, ou bien tu ajoutes une colonne d'ordre, ou bien tu spécifies l'ordre dans les requêtes.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT idVersionDoc, nomVersionDoc
    FROM versionDoc
    ORDER BY
    	CASE 
    		WHEN idVersionDoc = 'fra' THEN 1
    		WHEN idVersionDoc = 'ang' THEN 2
    		ELSE 1000
    	END,
    	idVersionDoc
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Bonjour CinePhil et merci pour ta réponse

    Je ne connaissais pas cette façon de faire, super

    Bonne fin de journée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2007, 21h09
  2. Comment classer par ordre chronologique
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/11/2006, 22h04
  3. Réponses: 2
    Dernier message: 09/11/2006, 07h37
  4. Afficher des fichiers dans l'ordre chronologique
    Par navis84 dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2006, 15h49
  5. [MySQL] classer par ordre numérique
    Par july dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/05/2006, 09h43

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