SQLite Left Join 2 таблицы с более чем 1 совпадающими регистрами - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно присоединиться слева к двум таблицам.

таблица: фильмы

id  title       ext
1   Terminator  mp4
2   Matrix      mkv
3   Predator    mkv

таблица: аудио

id  language    codec   bitrate
1   English     AAC     320
2   English     AC3     640
2   Spanish     AAC     320
2   German      AAC     320
3   English     DTS     640
4   Japanese    AAC     320

Когда я использую ставку Left Join:

SELECT title, language, codec
FROM movies M LEFT JOIN audio A
ON (M.id=A.id)

Я получаю такой результат:

   title        language    codec
1  Terminator   English     AAC
2  Matrix       English     AC3
2  Matrix       Spanish     AAC
2  Matrix       German      AAC
3  Predator     English     DTS

Я хочу, чтобы язык и кодек были сгруппированы в один столбец. Мне нужен этот результат:

   title        language                      codec
1  Terminator   English                       AAC
2  Matrix       English - Spanish - German    AC3 - AAC - AAC
3  Predator     English                       DTS

Я довольно новичок в SQLite. Я буду признателен за любую помощь и просвещение. Спасибо.

1 Ответ

0 голосов
/ 18 октября 2019

Вам нужна группировка и group_concat(). Что-то вроде:

SELECT m.id, m.title
     , group_concat(a.language, ' - ') AS language
     , group_concat(a.codec, ' - ') AS codec
FROM movies AS m
LEFT JOIN audio AS a ON m.id = a.id
GROUP BY m.id
ORDER BY m.id;

, что дает:

id     title                 language                        codec
-----  --------------------  ------------------------------  --------------------
1      Terminator            English                         AAC
2      Matrix                English - German - Spanish      AC3 - AAC - AAC
3      Predator              English                         DTS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...