我的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,但是由于某种原因,它给出了语法错误。我感觉我的联接不正确,但是我无法得到更好的结果。
答案 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
。