Задать вопрос
Ответы пользователя по тегу Базы данных
  • Не понимаю как правильно ли использую функцию DISTINCT?

    @holllop Автор вопроса
    Для базы данных PostgreSQL это будет выглядеть так
    WITH temp_table AS (
      SELECT printer, 
             CONCAT('{', STRING_AGG(QUOTE_LITERAL(materials), ','), '}') AS materials
      FROM printers 
      GROUP BY printer
    )
    SELECT CONCAT('{"printer":"', printer, '", "materials":', materials::json, '}') AS json_format 
    FROM temp_table;

    В моём случая (я использую Node.js для создания API) это выглядит вот так
    const getPrinterMaterials = async () => {
      const query = `WITH temp_table AS (
        SELECT printer, CONCAT('{', STRING_AGG(QUOTE_LITERAL(materials), ','), '}') AS materials
        FROM printer_materials
        GROUP BY printer
      )
      SELECT CONCAT('{"printer":"', printer, '", "materials":', materials::json, '}') AS json_format
      FROM temp_table;`;
      //где-то что-то не так с запросом т.к. получаю ошибку  неверный синтаксис для типа json
      const client = await pool.connect();
      try {
        const result = await client.query(query);
        return result.rows.map(row => row.json_format);
      } finally {
        client.release();
      }
    };
    
    module.exports = {
      getPrinterMaterials,
    };

    <
    const express = require('express')
    const bodyParser = require('body-parser')
    const cors = require('cors')
    const db = require('./pool');
    const app = express()
    const port = 3000
    
    app.use(bodyParser.json())
    app.use(
     bodyParser.urlencoded({
        extended: true,
      })
    )
    
    app.use(cors())
    
    app.get('/printer_material', db.getPrinterMaterials);
    Ответ написан
    Комментировать