SQLite GROUP_CONCAT из другой таблицы, несколько соединений - PullRequest
0 голосов
/ 15 ноября 2018

Возникли проблемы с моим SQL-запросом.Ни в коем случае не эксперт по SQL.

SELECT transactions.*, categories.*, GROUP_CONCAT(tags.tagName) as concatTags FROM transactions INNER JOIN categories ON transactions.category = categories.categoryId LEFT JOIN TransactionTagRelation AS ttr ON transactions.transactionId = ttr.transactionId LEFT JOIN tags ON tags.tagId = ttr.tagId;

(есть также команда where и group by, но я не думаю, что она имеет отношение к вопросу).

Я пытаюсь получить:

transactionId1, ...otherStuff..., "tagId1,tagId2,tagId3"  
transactionId2, ...otherStuff..., "tagId1,tagId3"

То, что у меня сейчас есть, объединяет теги в одну транзакцию или что-то в этом роде.Я попытался добавить идентификатор GROUP BY в конце, но по какой-то причине выдает синтаксическую ошибку.У меня такое чувство, что мои соединения неверны, но я не смог ничего улучшить.

1 Ответ

0 голосов
/ 15 ноября 2018

Сделайте что-то вроде этого:

SELECT t.*, c.*,
       (SELECT GROUP_CONCAT(tg.tagName)
        FROM TransactionTagRelation ttr JOIN
             Tags tg
             ON tg.tagId = ttr.tagId
        WHERE t.transactionId = ttr.transactionId
       ) as concatTags
FROM transactions t JOIN
     categories c
     ON t.category = c.categoryId;

Это исключает GROUP BY во внешнем запросе и позволяет использовать t.* и c.* в SELECT.

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