Получить все данные таблиц с помощью Node.js и SQLite - PullRequest
0 голосов
/ 13 июля 2020

Наличие этих таблиц в базе данных:

Спортсмен с полями: athlete_id, name, surname, date_of_birth, height, weight, bio, photo_id

AthletePhoto с полями: photo_id, photo, mime_type

AthleteResult с полями: athlete_id, gold, silver, bronze

Game с полями: game_id, city, year

Модель db:

введите описание изображения здесь

Код пока может отправлять данные только для одной из таблиц:

db.serialize(function () {
    db.all(
      'SELECT athlete_id, name, surname FROM Athlete',
      function (err, rows) {
        return res.send(rows);
      }
    );
  });

, поэтому он использует этот запрос: SELECT athlete_id, name, surname FROM Athlete.

Есть ли способ объединить таблицы и отправить все данные?

Я пытался объединить 2 таблицы, Athlete и AthletePhoto, но не отправил никаких данных:

SELECT athlete_id, name FROM Athlete UNION SELECT game_id, city, year FROM Game UNION SELECT photo_id as athlete_id, mime_type as name FROM AthletePhoto

1 Ответ

2 голосов
/ 13 июля 2020

Предполагая, что структура вашей базы данных правильно представляет потребности вашего приложения, запрос, который вы пытаетесь сделать, будет выглядеть примерно так:

SELECT
a.athlete_id, a.name, a.surname, a.date_of_birth, a.bio, a.height, a.weight,
ap.photo, ap.mime_type,
ar.gold, ar.silver, ar.bronze,
g.city, g.year
FROM
(
    (
        (Athlete a JOIN AthletePhoto ap ON a.photo_id = ap.photo_id)
        JOIN
        AthleteResults ar ON a.athlete_id = ar.athlete_id
    )
    JOIN
    Game g ON ar.game_id = g.game_id
    
)

В таблице Athlete есть одна ошибка, столбец date_of_birth определен дважды. Вы должны переименовать любого из них. Нет необходимости использовать UNION в вашем запросе, если вы хотите объединить результаты из разных таблиц, вместо этого используйте JOIN.

JOIN Объединяет разные таблицы по строкам

UNION Объединяет разные таблицы по столбцам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...