Вывод своего столбца, который включает связанные данные из другой таблицы

Я новичок в SQL, поэтому просьба не судить строго. Пробовал нагуглить решение моего вопроса, но не смог найти нужного ответа. Есть две таблицы authors и books

CREATE TABLE authors (
    id uuid PRIMARY KEY,
    name text
)
    
CREATE TABLE books (
    id uuid PRIMARY KEY,
    title text,
    author_id uuid REFERENCES authors(id)
)

Требуется получить данные в таком формате. Каким запросом это можно сделать?

{
    id: 'some book id',
    title: 'Romeo and Juliet'
    author_id: 'some author id',
    author: {
        id: 'some author id',
        name: 'William Shakespeare'
    }
}

Ближайший результат, который удавалось получить был таким

{
    id: 'some book id',
    title: 'Romeo and Juliet'
    author_id: 'some author id',
    id: 'some author id',
    name: 'William Shakespeare'
    author: {
        id: 'some author id',
        name: 'William Shakespeare'
    }
}

При использовании такого запроса

SELECT *, row_to_json(authors) AS author
FROM books
    JOIN authors ON books.author_id = authors.id

Ответы (1 шт):

Автор решения: Superproger77
SELECT books, row_to_json(authors) AS author
FROM books INNER JOIN authors ON books.author_id = authors.id;

SELECT * — это плохая практика, потому что она может привести к ряду проблем:

  1. Медленная производительность: использование SELECT * может замедлить выполнение запроса, так как он выбирает все столбцы из всех таблиц, даже если нужны только некоторые столбцы.
  2. Неконтролируемый результат: при использовании SELECT * невозможно контролировать, какие столбцы будут выбраны, что может привести к неожиданным результатам.
  3. Уязвимость к атакам с использованием SQL-инъекций: использование SELECT * делает приложение уязвимым к атакам с использованием SQL-инъекций, так как злоумышленник может вставить вредоносный код в запрос.
  4. Трудности в обслуживании: при использовании SELECT * может быть сложно поддерживать и обновлять код, так как изменения в структуре базы данных могут повлиять на запросы.

Рекомендуется использовать явное указание столбцов в запросе, чтобы повысить производительность, контролировать результат и обеспечить безопасность приложения.

→ Ссылка