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

PHP & Base de données Discussion :

extraire une valeur au milieu d'un champ qui contient plusieur valeurs en phpmyadmin


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut extraire une valeur au milieu d'un champ qui contient plusieur valeurs en phpmyadmin
    s'il vous plait il me reste seulement une requete.
    ma table contien les deux champs : username, notes


    le champs notes contien plusieurs note d'un éléve
    (apres avoir untiliser la requette group_concat sur une table,)

    par exemple le champ notes contien cette valeur * 20,18,15.5,15,14,10,6

    je veux extraire la note 15.5 , SUBSTRING_INDEX( username, ",", 2 ) ne peux pas extraire au milieu. car ça peut etre la note au milieu 15 ou bien 15.5

    et je veux une requette pour l'executer sur lea table

    s'il vous plait comment faire?

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 520
    Par défaut
    Bonjour,

    C'est faisable en utilisant les fonctions json et une expression régulière :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select username,notes,json_extract(concat('[',notes,']')
                  ,concat("$["
                          ,regexp_replace(
                              json_search(concat('[',notes,']'),'all','15.5',null,'$[*]')
                          ,'[^0-9]+'
                          ,'')
                  ,"]")
    ) as quinzEtDemi
    FROM `user`

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 330
    Billets dans le blog
    17
    Par défaut
    Tu te contorsionnes Il faudrait sans doute revoir la manière de faire et sélectionner directement la valeur souhaitée.

    Ici pourquoi 15,5 ? Parceque c'est la 3e meilleure note ? La 1re au-dessus de 15 ?

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut
    merci pour votre reponse
    mais je l'ai essayé ==> error==> json_extract does not exist.


    plus simplement je veux extrarair à partir du champ notes qui contien 7 notes d'un eleve 20,18,15.5,15,14,10,6

    je veux extraire n'importe quelle valeur delimitée par la virgule, a partir de la position de la virgeule.
    par exemple je veux extraire le chifre qui est entre la 2eme virgule et la troisieme virgule.

    c'est ca exactement ce que je veux

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 330
    Billets dans le blog
    17
    Par défaut
    je veux extraire le chifre qui est entre la 2eme virgule et la troisieme virgule.
    Pourquoi veux-tu faire ceci ? Dans une base de données on ne devrait jamais avoir ce genre de considérations (ou si on les a c'est mauvais signe).

    Récupérer la 3e note d'un élève parmi ses notes classées de la plus élevée à la plus faible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ALL note_value
    FROM notes
    WHERE note_student = {$student}
    ORDER BY note_value DESC
    LIMIT 1 OFFSET 3 -- On prend 1 note à partir de la 3e

Discussions similaires

  1. Extraire une valeur d'un champ text avec condition
    Par yoyo-tns dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 03/12/2012, 23h05
  2. Réponses: 4
    Dernier message: 07/09/2010, 10h12
  3. extraire une valeur d'un champs à partir de la droite
    Par kinganasius dans le forum Oracle
    Réponses: 5
    Dernier message: 08/03/2007, 16h11
  4. Base de données: extraire une valeur de champ
    Par jdudoret dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/07/2006, 11h35
  5. Réponses: 1
    Dernier message: 05/12/2005, 22h49

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