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

SQL Oracle Discussion :

Classer par ordre alphabétique deux attributs


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Classer par ordre alphabétique deux attributs
    Bonjour,

    Je suis débutant en SQL Oracle, et je cherche votre aide sur une petite requête! Je vous remercie d'avance pour toute remarque, suggestion ou conseil

    Voila, j'ai une table TABLE qui contient

    NUMERO ELEVE VILLE
    1 B PARIS
    2 A TOULOUSE
    3 C LYON

    Je cherche à afficher ELEVE et VILLE par ordre alphabétique!

    Je sais que individuellement, je peux faire sans aucun problème
    Select eleve from TABLE order by eleve et meme chose pour VILLE

    Mais comment pourrais-je classer Eleve et Ville par ordre alphabétique dans une même requête? c'est possible?

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 123
    Points : 28 547
    Points
    28 547
    Par défaut
    La clause ORDER BY accepte plus d'une colonne...
    Ensuite, il faut que tu saches dans quel ordre tu veux trier : d'abord par ville, puis pour chaque ville les noms des élèves (ORDER BY ville, eleve) ou d'abord par nom puis pour chaque nom les villes où on retrouve le même nom (ORDER BY eleve, ville)?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Je vous remercie pour votre réponse, cela me fait énormément plaisir,

    En effet, je me suis peut-être mal exprimé : si on fait ORDER BY ELEVE,VILLE, cela classera les élèves par ordre alphabétique, et si deux élèves ont le même nom, on classera suivant la VILLE!

    Mais moi je cherche à classer les ELEVES par ordre alphabétique indépendamment de leurs villes, et pareil, les VILLE par ordre alphabétique indépendamment des élevés et tout ça en une seule requête!

    En gros, si je fais ça en deux requêtes, cela donnera
    Select eleve from TABLE order by eleve ET Select ville from TABLE order by ville

    J’espère que je ne dis pas de bêtises!
    Merci beaucoup

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 123
    Points : 28 547
    Points
    28 547
    Par défaut
    Cela pourrait se faire par une UNION. Toutefois je ne comprends pas réellement l'intérêt fonctionnel de l'opération.

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Vous cherchez à faire un tri dynamiquement: une seule requête mais qui présente les données triés en fonction d'un paramètre ?

  6. #6
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Autre réponse
    Je reprends ton exemple avec plus de détail.

    Ta table en entrée contient :
    NUMERO;ELEVE;VILLE
    1 ; B ; PARIS
    2 ;A ;TOULOUSE
    3 ;C ; LYON

    Si j’ai bien compris, tu veux avoir en résultat :
    NUMERO;ELEVE;VILLE
    1 ;A ;LYON
    2 ;B ;PARIS
    3 ;C ;TOULOUSE

    Il faudrait créer une JIONTURE afin de rassembler les colonnes et non une UNION. Mais la requête ne va pas être simple car il faudrait commencer par l’ajout d’une jointure incrémentale pour chaque requête
    Requête 1 : avec un order by sur les élèves
    Requête 2 : avec un order by sur les villes
    Et ensuite faire la correspondance entre les jointures créées pour chaque Requête. En revanche dans le cas où tu auras par exemple une 4 éme personne « 4 ;D ;PARIS » et donc redondance sur les villes !!! là ça va être chaud de traiter ce genre de cas …

    Pour infos :
    UNION : permet d'effectuer une UNION de lignes sélectionnées par deux clauses SELECT. Par défaut les doublons sont automatiquement éliminés (sinon il faudrait utiliser UNION ALL).

    JOINTURE : permet de rassembler les colonnes entre deux selon un critère identique entre les deux (ou plusieurs) tables.

  7. #7
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    salut,
    tu generes tes 2 tables triées, tu affectes un rownum a chaque ligne, tu cherches le meme rownum dans les 2 tables (c'est pas joli mais ca peut marcher)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select tville.id, tville.ville, Televe.eleve from 
    ( select rownum as id, ville as ville from Table order by ville) Tville,
    ( select rownum as id, eleve as eleve from Table order by eleve) Televe
    where Tville.id = Televe.id

Discussions similaires

  1. [MySQL] classer par ordre alphabétique
    Par hichamdeb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2010, 12h35
  2. Classer les procédures par ordre alphabétique
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/02/2007, 22h22
  3. [MySQL] Classer champ par ordre alphabétique (je n'arrive pas à fermer le </ul>)
    Par Pepito2030 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/02/2007, 13h14
  4. [MySQL] Classer des résultats par ordre alphabétique
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/07/2006, 15h59
  5. [VB6] Classer par ordre alphabétique
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/05/2006, 18h48

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