Как внутреннее объединение и анализ данных как JSON с помощью json1 - PullRequest
1 голос
/ 16 июня 2020

Например, у меня есть таблица с именем Mov ie с 2 столбцами - [id, title]

Data :

1, killbill
2, endgame

и другая таблица как Cast с 2 столбцами - [id, name]

Data:

1, Uma
1, David
2, Robert

В таблице приведения есть акторы, а идентификатор такой же, как mov ie.

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

1, killbill, [uma,David]
2, endgame,[Robert]

Что я пробовал:

select m.*,json_array(c.name) from movie m inner join cast c on c.id = m.id  

Но он возвращает:

1   killbill    [David]
1   killbill    [Uma]
2   endgame     [Robert]

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

Если я использую json_group_array, я получаю только один mov ie со всем приведением

1   killbill    ["David","Uma","Robert"]

1 Ответ

0 голосов
/ 16 июня 2020

Вы должны group by mov ie и использовать агрегатную функцию json_group_array() вместо json_array():

select m.id, m.title, json_group_array(c.name) names
from movie m inner join cast c 
on c.id = m.id 
group by m.id, m.title

См. демонстрацию . Результатов:

| id  | title    | names           |
| --- | -------- | --------------- |
| 1   | killbill | ["David","Uma"] |
| 2   | endgame  | ["Robert"]      |
...