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

SGBD Perl Discussion :

order by field pas effectif


Sujet :

SGBD Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut order by field pas effectif
    Bonjour à tous,

    J'ai un script perl qui utilise le module DBI. Ce script va chercher des données dans une base de données MySQL en utilisant les méthodes :
    ->prepare
    ->execute
    ->finish

    La requête SQL contient la clause ORDER BY FIELD (age,'moins de 10 ans','10 à 15 ans','15 et plus') ou je précise un ordre d'affichage des résultats.

    Quand j'exécute ma requête depuis phpMyAdmin, les résultats affichés sont conformes à la clause ORDER BY FIELD que j'ai précisée.

    Ce qui me donne :
    age
    moins de 10 ans
    10 à 15 ans
    15 et plus


    Par contre, quand j'exécute la requête depuis mon script perl, que je récupère les données au moyen de la méthode ->fetchrow_array et que j'écris ces résultats dans un fichier de sortie, l'ordre que je désire n'est plus respecté.

    Ce qui me donne :
    age
    10 à 15 ans
    15 et plus
    moins de 10 ans


    Quelqu'un voit d'où vient ce problème ?

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 84
    Points : 66
    Points
    66
    Par défaut
    J'ai trouvé une solution en m'inspirant de ce post et dans la mesure des mes connaissances en perl !

    Je récupère les informations de ma requête en les assignant dans un hash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (my @data = $sth->fetchrow_array) {
     $hdt{$data[0]} = ["$data[1]","$data[2]","$data[3]"];
    }
    Avec comme clé, les valeurs du champ sur lequel était appliqué la clause SQL ORDER BY FIELD.

    Je peux alors écrire les résultats comme bon me semble dans mon fichier de sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for my $type (keys %hdt) {
    if ($type =~ /^m/) {
      print FICHIERXML "
       <rev>
        <classe>$type</classe>
         <c1>$hdt{$type}[0]</c1>
         <c2>$hdt{$type}[1]</c2>
         <c3>$hdt{$type}[2]</c3>
        </rev>
       ";
     }
    }

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/05/2011, 17h31
  2. order by field() avec option like !
    Par travailmichel dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/09/2010, 16h00
  3. Mes .htaccess ne sont pas effectifs
    Par Invité dans le forum Apache
    Réponses: 2
    Dernier message: 12/08/2009, 09h21
  4. Order By field() et limit
    Par lowkey dans le forum Langage SQL
    Réponses: 0
    Dernier message: 07/04/2008, 12h01
  5. Z-Order (existe, existe pas) ?!?!
    Par Franck.H dans le forum SDL
    Réponses: 7
    Dernier message: 08/06/2006, 15h50

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