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 :

difficulté de formuler une requete


Sujet :

Langage SQL

  1. #1
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut difficulté de formuler une requete
    Bonjour
    j'ai dans une table Logiciels une colone nommée Version de type string et qui prend toujours la form X.Y.Z où X et Y et Z sont des nombres (par exemple '1.13.225')
    je veux dans une requete sql selectionner la plus récente version enregistrée. celle ci correspond a la valeur qui le plus grand X, s'il y en a plusieurs alors je prends celle qui a le plus grand Y et s'il y en a encore plusieurs, je prends celle avec le plus grand Y !

    mon probleme est que je n'arrive pas à formuler une bonne requete sql qui résume tout ca !
    merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Par défaut
    Salut,

    fais une requête dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM `Logiciels`
    ORDER BY `Logiciels`.`Version` ASC
    ;)

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    la taille de ta chaine de caractère peut varier?

  4. #4
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    Salut,
    pour la suggestion de TekFanatiX ca ne marchera pas parce que selon ta requete 2.5.3 > 12.2.3 !!! parceque ce sont des chaines de caracteres.

    oui la chaine peut varier selon les valeus de X, Y et Z (par exemple X peut etre de 1 chiffre mais peut aussi etre de 2 chiffres...)

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Le plus simple serait de revoir la structure de ta table logiciel, et de rajouter 3 champs qui correspondrait chacun à X, Y ou Z en format number, et ta vie serait simplifiée. Enfin, si tu peux le faire !

  6. #6
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    c'est une bonne idée mais impossible de changer la structure de la table ! merci pour ton aide

  7. #7
    Scorpi0
    Invité(e)
    Par défaut
    J'aurais bien des idées qui pourrait marcher mais ça dépend de ton SGBD ^^

    Edit : allez, en Oracle, ça donnerait la boucherie suivante :

    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
    with Logiciels as
    (
     select '1.13.225' as version from dual
     union all select '1.13.226' as version from dual
     union all select '0.13.225' as version from dual
     union all select '1.12.225' as version from dual
    )
    SELECT --* from
    DISTINCT max(Version) over (ORDER BY X desc,Y desc,Z desc) FROM
    (
      SELECT to_number(substr(Version ,1,instr(Version ,'.')-1)) AS X,
             to_number(substr(substr(substr(Version,instr(Version,'.')),2),1,instr(substr(substr(Version,instr(Version,'.')),2),'.')-1)) AS Y, 
             to_number(substr(substr(substr(substr(Version,instr(Version,'.')),2),instr(substr(substr(Version,instr(Version,'.')),2),'.')),2)) AS Z,
    Version
      FROM Logiciels 
    )
    Résultat :

    Dernière modification par Scorpi0 ; 02/12/2008 à 17h12.

  8. #8
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    merci bien mais je travaille avec mysql

  9. #9
    Scorpi0
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT Version from
    (
      SELECT cast(substr(Version ,1,instr(Version ,'.')-1) as int) AS X,
             cast(substr(substr(substr(Version,instr(Version,'.')),2),1,instr(substr(substr(Version,instr(Version,'.')),2),'.')-1) as int) AS Y, 
             cast(substr(substr(substr(substr(Version,instr(Version,'.')),2),instr(substr(substr(Version,instr(Version,'.')),2),'.')),2) as int) AS Z,
    Version
      FROM Logiciels 
    )
    ORDER BY X DESC,Y DESC,Z DESC
    limit 1
    Je suis pas un expert MySQL, mais instr et substr fonctionne pareil qu'en Oracle, j'ai modifier le to_number() en cast ( as int) et utiliser le LIMIT au lieu de la fonction analytique d'Oracle.


    Edit : un forum existe pour le MySQL !!
    http://www.developpez.net/forums/f98...ysql/requetes/
    Dernière modification par Scorpi0 ; 02/12/2008 à 18h00.

  10. #10
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    la requete contient dse erreurs de syntaxe mais l'idée m'est maintenant tres claire !!!
    et je te remercie bien pour ton aide
    cordialement subzero

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

Discussions similaires

  1. Difficulté pour réaliser une requete peu complexe :/
    Par DanaX dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/05/2007, 13h55
  2. Réponses: 13
    Dernier message: 21/04/2006, 15h39
  3. Comment formuler une requête alter table ?
    Par cjo dans le forum Paradox
    Réponses: 2
    Dernier message: 29/12/2005, 03h11
  4. difficulté pr ecrire une requete
    Par peppena dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/11/2005, 13h01
  5. En difficulté pour faire une requete
    Par Fonzy17 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2005, 10h56

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