特定のタグにリンクされているすべての記事を選択する必要がありますが、各記事に関連付けられている他のすべてのタグも必要です。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
には、テーブルとの多対1の関係がありtopic
ます。