我需要选择链接到特定标签的所有文章,但我还希望与每篇文章关联的所有其他标签。凭借我有限的 SQL 知识,我进行了以下 MySQL 查询,该查询有效,但似乎效率不高。
SELECT a.id, a.name, c.id AS topic_id, c.name AS topic, GROUP_CONCAT(t.id) AS tag_ids, GROUP_CONCAT(t.name) AS tags, a.description
FROM tag t
LEFT JOIN artifacts_tags j ON t.id = j.tag_id
LEFT JOIN artifact a ON a.id = j.artifact_id
LEFT JOIN topic c ON c.id = a.topic_id
LEFT JOIN artifacts_tags aj ON a.id = aj.artifact_id
LEFT JOIN tag ts ON ts.id = aj.tag_id
WHERE ts.slug = 'summer'
AND a.is_public = 1
GROUP BY a.id
如果有人可以提出更有效的查询,我将不胜感激。
实际上,我还需要类似的标签(所有标签都属于带有 slug 'summer' 的标签所属的主题),但我有另一个查询。如果我可以使用相同的查询获得类似的标签会更好,但我不知道如何。该表tag
与表具有多对一关系topic
。