Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQL Query zu JSON aufbereiten

Dieses Thema im Forum "PostgreSQL" wurde erstellt von Garzec, 18 März 2019.

  1. Garzec

    Garzec Benutzer

    Hallo, ich bin neu hier und auf der Suche nach Hilfe :) Es wurde eine REST API für ein Forum erstellt (Ein frei erfundenes Übungsprojekt!). Relevant sind die folgenden beiden Tabellen

    Topic

    id | topic_id (übergeordnetes Thema) | name | description
    -------------------------------------------------------
    uuid | uuid | text | text

    und Thread

    id | topic_id | name | created_at
    -------------------------------------------------------
    uuid | uuid | text | timestamp without timezone

    Jetzt soll anhand der TopicID folgendes JSON Objekt an den Client zurückgeschickt werden

    Code:
    {
       parentTopic: {}, // kann auch null sein
       name: "",
       description: "",
       childTopics: [{}, {}, {}],
       threads: [{}, {}, {}] // sortiert nach created_at
    }
    Ich habe hier auch mal Testdaten für beide Tabellen angelegt

    Die Topic Tabelle:

    [​IMG]

    Die Thread Tabelle:

    [​IMG]

    Ich glaube nicht, dass man das Query so weit aufbereiten kann, dass man das Queryresult am Backend fast nur noch durchreichen muss. Falls doch, umso besser :).

    Ich habe mal mit meinen quasi nicht vorhandenen SQL Skills versucht, ein Query dafür aufzustellen. Die ID gehört zu Thema 2.

    Code:
    SELECT
       currentTopic.name,
       currentTopic.description,
       parentTopic.id AS parentTopicId,
       parentTopic.name AS parentTopicName,
       parentTopic.description AS parentTopicDescription,
       childTopic.id AS childTopicId,
       childTopic.name AS childTopicName,
       childTopic.description AS childTopicDescription,
       linkedThread.id AS threadId,
       linkedThread.name AS threadName,
       linkedThread.created_at AS threadCreatedAt
    FROM
       topic currentTopic
    left JOIN
       topic parentTopic ON currentTopic.topic_id = parentTopic.id
    left JOIN
       topic childTopic ON currentTopic.id = childTopic.topic_id
    left JOIN
       thread linkedThread ON currentTopic.id = linkedThread.topic_id
    WHERE
       currentTopic.id = '624aaab6-2d2d-45dc-a425-c2863f05779c'
    ORDER BY
       linkedThread.created_at;
    In PgAdmin bekomme ich 2 Rows zurückgeliefert. Klingt schon einmal gut. Meine Frage wäre jetzt: Gibt es eine Möglichkeit, das Query so weit aufzubereiten, dass es quasi "ready to use" von der DB kommt?

    Vielen Dank schon einmal.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    ist das noch aktuell? Falls ja: kannst Du die Daten Copy&Paste-fähig uns geben?
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden