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

Requêtes MySQL Discussion :

Objet json dans resultat


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Objet json dans resultat
    Bonjour,

    Je suis actuellement face à un problème, dans une de mes colonnes les donnée sont stocké au format json.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    { "incomingData":"0",
      "outcomingData":"0",
      "totalData":"0",
       "incomingVoice":"0",
       "outcomingVoice":"64",
       "totalVoice":"64",
        "incomingSms":"0",
       "outcomingSms":"0",
       "totalSms":"0"
    }
    Je dois au travers ma requête renvoyer la valeur de l'attribut totalVoicie convertie au forma hh:mm:ss soit pour cette ligne 00:01:04
    Mon responsable ne souhaite pas entendre parler d'autre chose que d'un resultat en sql.
    J'ai vraiment besoin de vos lumière pour y parvenir.

    Merci d'avance


  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    J'ai vue apres quelque que recherche qu'il y a des fonction pour utiliser le json j'ai donc effectué cette requette
    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
    17
    18
     
    select a.*, c.*, cc.*,s.client_id,u.emailUser,cl.ClientName,s.iccid,s.msisdn,s.adresse_id,s.num_app,s.last_consumption_data AS conso JSON_VALUE(jsonContent, '$.totalVoice.last_consumption_data') ,last_consumption_date from alerte2 a
    INNER JOIN alerte2_contact c
    ON c.alerte2_id = a.id
    INNER JOIN contact_commercial cc
    ON cc.id_contact_cm = c.id_contact_cm
    INNER JOIN sim s
    ON a.client_id = s.client_id
    INNER JOIN sim_facturation sf
    ON sim_id = s.id
    INNER JOIN `user` u
    ON u.ClientID = s.client_id
    INNER JOIN client cl
    ON cl.ClientID = u.ClientID
    WHERE a.status = 1
    GROUP BY s.msisdn
    HAVING conso >'00:15:00'
    ORDER BY s.client[...]
    Malheureusement j ai une erreur du a la fonction json

    #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 'JSON_VALUE(jsonContent, '$.totalVoice.last_consumption_data') ,last_consumption' at line 1

    Je continue mes recherche

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 453
    Par défaut
    Bonjour,
    A mois qu'il ne s'agisse que d'une erreur de copier/coller, il manque une virgule entre AS conso et JSON_VALUE.

    Tatayo.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    Bonjour

    Cette partie de requête, sauf en phase de test unitaire à la rigueur, est à remplacer par la liste des colonnes UTILES au traitement :

    SELECT a.*, c.*, cc.*.

    A minima, toutes les colonnes de jointure sont en double et chargent donc inutilement le réseau, il y a probablement plein d'autres colonnes dont vous n'avez que faire.

    Qui plus est la clause GROUP BY est aberrante puisque incohérente avec les agrégats (j'ai même l'impression qu'il n'y a aucun agrégat...)
    Seul MySQL autorise cette incohérence et restitue dans ce cas des valeurs de son choix pour les colonnes non agrégées...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Bonjour,

    Effectivement j'ai revu ma requête pour y laisser le nécessaire de plus le groupe by était utilisé dans la requête avant modification

    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
    17
    18
     
    select  s.client_id,u.emailUser,cl.ClientName,s.iccid,s.msisdn,s.adresse_id,s.num_app, JSON_VALUE('s.last_consumption_data', '$.totalVoice.last_consumption_data') AS conso  ,last_consumption_date from alerte2 a 
                        INNER JOIN alerte2_contact c
                            ON c.alerte2_id = a.id
                        INNER JOIN contact_commercial cc
                            ON cc.id_contact_cm = c.id_contact_cm
                        INNER JOIN sim s
                            ON a.client_id = s.client_id
                        INNER JOIN sim_facturation sf
                            ON sim_id = s.id
                        INNER JOIN `user` u
                            ON u.ClientID = s.client_id
                        INNER JOIN client cl
                            ON cl.ClientID = u.ClientID
                        WHERE a.status = 1
     
                            HAVING conso >'00:15:00'
                            ORDER BY  s.client_id
    Apparement sur mysql le fonction JSON!VALUE n'existe pas je suis totalement dans les choux

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    Pour les fonctions JSON, voir le reference manual de votre version, par exemple pour la 5.7 ICI

    Encore une remarque au sujet de la syntaxe : HAVING sert à faire des restrictions sur le résultat du regroupement. Là encore MySQL est permissif et traduit cette clause comme un WHERE, mais d'autres SGBD n'auraient pas autorisé cette syntaxe.

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

Discussions similaires

  1. [PowerShell] Rechercher via id un objet json dans un fichier
    Par Lekno dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 16/02/2020, 16h16
  2. Récupérer un objet JSON dans un Javascript
    Par demcoul dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2019, 00h29
  3. Stocker une liste d'objets JSON dans localStorage
    Par Tanebisse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/03/2016, 21h22
  4. traduction de resultat json dans une autre langue
    Par xouzi dans le forum Langage
    Réponses: 7
    Dernier message: 03/01/2012, 16h46
  5. inserer un objet JSON dans HTML
    Par Palsajicoco dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/03/2011, 14h00

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