来自另一个表的SQLite GROUP_CONCAT,多个联接

时间:2018-11-15 00:33:02

标签: sql sqlite

我的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;

(还有一个位置和分组依据,但认为与问题无关)。

我正在尝试获取:

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

我现在所看到的似乎是将标签合并为一项事务或其他内容。我尝试在末尾添加GROUP BY transactionID,但是由于某种原因,它给出了语法错误。我感觉我的联接不正确,但是我无法得到更好的结果。

1 个答案:

答案 0 :(得分:1)

执行以下操作:

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