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 :

Classé par ordre alphabétique à partir d'une lettre donné


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut Classé par ordre alphabétique à partir d'une lettre donné
    bonjour,

    je cherche a effectuer une requête qui va me classé les différents entreprises de ma bdd par ordre alphabétique mais à partir d'une lettre tiré préalablement aléatoirement. et par adhésion à une organisation.



    Par exemple dans ma table j'ai:

    Entreprise adhésion
    1 pour adhérer et 0 pour non adhérent.

    tttttttttttt 1
    oooooooooo 0
    nnnnnnn 0
    fffffff 1
    aaaaaaa 1
    xxxxxx 1
    mmmmmm 0


    PAr exemple la lettre générée aléatoirement est: M la requete doit donc m'afficher :

    tttttttttttt
    xxxxxx
    aaaaaaa
    fffffff
    mmmmmm
    nnnnnnn
    oooooooooo

    elle classe d'abord les adhérent en commencent par la lettre générée puis les non adhérent par ordre alpha à partir de A

    J'espère avoir été assez clair

    Donc je cherche de l'aide, des pistes etc pas la réponse s'il vous plaît

    merci d'avance,

    julien

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Par défaut En Oracle ...
    En Oracle, ça fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select entreprise
    from maTable
    order by adhesion desc, decode(upper(substr(entreprise,1,1)) >'M',0,1);
    Le upper c'est au cas où ta lettre tirée au hasard est en majuscule ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    tu peux m'expliquer un peu la requête stp. Ce qui suit deco( ...) >...


    j'utilise mysql/sql

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    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 135
    Par défaut
    DECODE est spécifique à Oracle.
    Le langage SQL normalisé propose CASE ... WHEN.

    Pour t'aider dans ta requête :
    ORDER BY accepte des expressions comme critères de tri
    Tu dois donc trier d'abord sur un identifiant de liste (adhérent ET après la lettre, puis adhérent ET avant la lettre, puis non adhérent) puis sur le nom d'adhérent.
    A toi la suite...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    ah voila ce que j'attendais merci à toi pour ces explications très claires.

    je regarde ca !!!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Par défaut En mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select entreprise
    from maTable
    order by adhesion desc, case upper(substring(entreprise,1,1) when >'M'THEN 0 ELSE 1 END;

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    roooh moi qui voulait chercher mdr tu abuses
    mais bon je te remercie quand même.
    Au moins, j'ai la correction

    Edit: je viens de la tester et j'ai une erreur dans phpmyadmin

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'when > 'M' THEN 0 ELSE 1 END LIMIT 0, 30' at line 1
    bye

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Citation Envoyé par titfab
    Je serais étonné que ça fonctionne ça.
    Avez-vous testé votre requête ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    c'est ce que je viens de dire en éditant mon message !!!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT CASE entreprise
    WHEN 'adherent' == 1 and upper(substring( entreprise, 1, 1 ) > 'M' THEN ...
    WHEN upper(substring( entreprise, 1, 1 ) < 'M' THEN ...
    END AS ordre_affichage,
    ELSE 1
    END 
    FROM ma_table;
    mais je suis un peu perdu là.


    Edit: merci Mr l'admin pour les balises code, excusez moi

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    A mon avis, il ne faut pas de double "=".
    Relisez cette partie sur la structure CASE WHEN et procédez par étape

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/10/2014, 15h31
  2. Menu classé par ordre alphabétique
    Par trikker dans le forum WordPress
    Réponses: 0
    Dernier message: 16/05/2010, 18h09
  3. Tie par ordre alphabétique d'une liste
    Par Freygolow dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 18/05/2007, 00h00
  4. Réponses: 1
    Dernier message: 27/05/2006, 23h13
  5. [MySQL] Une liste déroulante affichant les données d'une requête SHOW par ordre alphabétique
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/12/2005, 15h53

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