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 :

[VB Recordset ADO] Trier selon les premiers digits d'1 champ


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut [VB Recordset ADO] Trier selon les premiers digits d'1 champ
    salut,

    je fais des requêtes SQL sur une base access en VB via l'objet Recordset ADO, mais ma question repose sur la syntaxe de ma requête, du moins si c possible de la faire :

    imaginons une table pipo avec 2 champs 'present' et 'reference' (texte 8 digits). Je souhaite obtenir en résultat tous les enregistrements pour lesquels 'present' vaut 1, en triant de façon croissante mes résultats selon les 4 premiers digits (je suis certains que ces digits sont des chiffres...

    Je sais faire avec le tri classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSql = "select pipo.present, pipo.reference from pipo Where (pipo.present) = '1' Order By reference"
    mais comment écrire la syntaxe pour trier simplement selon les 4 premiers digits de reference???

    Merci & a++

  2. #2
    Membre expérimenté Avatar de souellet
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 155
    Par défaut
    Utilise une variable dans ta reqûete pour stocker la valeur de tes 4 premiers digits du champ référence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select pipo.present, pipo.reference, substr(pipo.reference,1,4) digit
    from pipo Where (pipo.present) = '1' 
    Order By digit
    Faut voir sur quelle base de données tu travailles et s'il permet de faie un SUBSTR. Sinon y'a CAST.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut
    c'est sur une base access 2000

    d'ailleurs je me rend compte que ce post aurait plus sa place sur le forum ACCESS, si un admin passe par là ;-)

    g testé avec SUBSTR mais je me fait jeter...

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Je ne comprends pas l'intérêt de trier sur les premiers caractères tel que tu le présentes, soit le tri sur les 4 premiers caractères est suffisament discriminant et le résultat est le même que si on trie sur tout le champ, soit il n'est pas assez discriminant, c'est à dire qu'il y a des doublons sur les 4 premiers caractères et le tri sur ces 4 caractères donnera la même chose que le tri total sur les 4 premiers caractères et un tri aléatoire sur chaque groupe correspondant aux 4 caractères ex sur 2 caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Tri sur 2 caractères       Tri Complet
    aaaa \                     aaaa
    aabc | aléatoire           aaab
    aaab/                      aabc
    bbab\ aléatoire            bbaa
    bbaa/                      bbab
    Le tri sur la totalité n'est qu'un cas particulier du tri sur les premiers caractères...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut
    salut

    en fait je suis certain qu'il n'y a pas de doublons sur les 4 premiers caractères...je suis confronté en fait à une mauvaise conception de la base et je ne peux pas la retoucher... il faut considérer sur les 4 digits suivants sont aléatoires...

    je réédite ma question qui pourrait être une partie de ma solution, parceque je trouve ca un peu ridicule de faire un tri via un tableau, mais bon... autant utiliser un requête pour ca

    1/ possibilité d'effectuer un tri sur les 4 premiers digits (vu la réponse de Médiat je ne pense pas)
    2/ possibilité de retrouver en retour le champ tronqué sur les 4 premiers digits

    A++

  6. #6
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    As-tu essayé ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    order by Left(pipo.reference, 4)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 49
    Par défaut
    Médiat, autant pour moi j'avais pas saisi ta réponse, mais tu as complètement raison, le fait de trier selon tout le champ suffit, vu que mes 4 digits sont de poid fort

    g du bol donc que ca ne soit pas tombé sur les poids faibles !!!

    autant pour moi donc

    A++

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

Discussions similaires

  1. [PowerShell] Trier selon les Types d'objets
    Par I'm_HERE dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 13/05/2011, 13h11
  2. [AC-2007] Condition en Si sur les premiers caractères d'un champ
    Par btks59 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/03/2011, 12h03
  3. Réponses: 1
    Dernier message: 16/09/2009, 13h30
  4. Trier un std::map selon les valeurs plutot que les clés
    Par dj.motte dans le forum SL & STL
    Réponses: 2
    Dernier message: 13/11/2004, 21h54
  5. [Debutant] GROUP BY sur les premiers caracteres d'un champ
    Par seb-astien dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/11/2004, 14h53

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