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 PostgreSQL Discussion :

Assemblage et Json


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 782
    Points : 1 493
    Points
    1 493
    Par défaut Assemblage et Json
    Bonjour à tous,

    Je n'ai pris le temps de faire un script de mise en place de ma problématique.
    J'espère que ça le fera quand même ^^.

    J'ai 3 tables : articles - composition - produits
    détail :
    articles (id_article, nom_article)
    composition (id_article, id_produit)
    produits (id_produit, nom_produit, type_produit)

    Le nombre d'articles distincts par produits est faible (disons de 0 à 6)

    j'ai trouvé comment faire pour avoir : id_article | nom_ article | json_composition
    mais le résultat n'est pas celui escompté

    j'ai, par exemple :
    [{"nom_produit": "huile","type_produit": "liquide"},{"nom_produit": "eau","type_produit": "liquide"},{"nom_produit": "sel","type_produit": "condiment"}]
    et bien sûr ce que je voudrais c'est :
    [{"type_produit": "liquide",[{"nom_produit": "huile"},{"nom_produit": "eau"}]},{"type_produit": "condiment"}[{"nom_produit": "sel"}]}]

    reformulé :
    j'obtiens les json objets par produits, alors que voudrais par type puis par produit, et ce pour chaque articles ^^

    Idéalement, sans plomber le serveur car le volume d'articles est plutôt volumineux.

    Des idées ?

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Dans le JSON que vous souhaitez, il y a un problème : il manque une clé devant le tableau des produits.
    Vous indiquez
    [{"type_produit": "liquide",[{"nom_produit": "huile"},{"nom_produit": "eau"}]},{"type_produit": "condiment"}[{"nom_produit": "sel"}]}]
    alors que ça devrait être quelque chose comme :
    [{"type_produit" : "liquide", "produits" : [{"nom_produit" : "huile"}, {"nom_produit" : "eau"}]}, {"type_produit" : "condiment", "produits" : [{"nom_produit" : "sel"}]}]
    En partant de cette correction, la requête pour obtenir ça doit ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    WITH q1 AS (
        SELECT a.id_article, a.nom_article, p.type_produit, json_agg(json_build_object('nom_produit', nom_produit)) AS nom_produit
        FROM articles a
        INNER JOIN composition c USING (id_article)
        INNER JOIN produits p USING (id_produit)
        GROUP BY id_article, nom_article, type_produit
    )
    SELECT id_article, nom_article, json_agg(json_build_object('type_produit', type_produit, 'produits', nom_produit))
    FROM q1
    GROUP BY id_article, nom_article
    ORDER BY id_article;

  3. #3
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 782
    Points : 1 493
    Points
    1 493
    Par défaut
    Merci CED.

    Juste parfait.

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

Discussions similaires

  1. [C#] Assemblages
    Par exe dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/02/2007, 14h36
  2. [D2005] Utiliser un assemblage .Net
    Par giloutho dans le forum Delphi .NET
    Réponses: 7
    Dernier message: 27/07/2005, 00h31
  3. Assemblage de 2 images pour une bannière
    Par zoullou dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 13/12/2004, 02h38
  4. Assemblage manuel
    Par syraks dans le forum Assembleur
    Réponses: 4
    Dernier message: 01/06/2003, 00h08
  5. Containeur pour un assemblage d'images
    Par Amenofis dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/02/2003, 15h10

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