Фильтр или отдельный запрос SQL на основе значения столбца - PullRequest
0 голосов
/ 30 декабря 2018

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

SELECT * 
FROM workouts
INNER JOIN circuits ON workouts.id = circuits.workout_id
INNER JOIN circuit_steps ON circuits.id = circuit_steps.circuit_id
INNER JOIN exercises ON exercises.id = circuit_steps.exercise_id
WHERE workouts.id = ${req.params.id}

Текущий результат таков (основные поля для краткости)

[
  {
    name: "Push Up",
    circuit_id: 1
  },
  {
    name: "Bicep Curl",
    circuit_id: 1
  },
  {
    name: "Squat",
    circuit_id: 2
  },
  {
    name: "Walk out",
    circuit_id: 2
  }
]

Я хочу иметь возможностьна GROUP результаты на circuit_steps.circuit_id, поэтому результат будет таким:

[
  [
    { name: 'Push Up', circuit_id: 1},
    { name: 'Bicep Curl', circuit_id: 1},
  ],
  [
    { name: 'Squat', circuit_id: 2},
    { name: 'Walk Out', circuit_id: 2},
  ],
]

1 Ответ

0 голосов
/ 30 декабря 2018

Вы можете использовать string_agg():

SELECT cs.circuit_id, string_agg(e.name, ',') as execise_names
FROM workouts w INNER JOIN
     circuits c
     ON w.id = c.workout_id INNER JOIN
     circuit_steps cs
     ON c.id = cs.circuit_id INNER JOIN
     exercises e
     ON e.id = cs.exercise_id
WHERE workouts.id=${req.params.id}
GROUP BY cs.circuit_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...