私は 1 つの MySQL クエリに苦労していますが、それを理解することができます。URL アドレスに関する情報を含む 3 つのテーブルがあります。
1 つの「ドメイン」には一意のドメイン名が格納されます。これは、2 番目のテーブル「urls」の「親」テーブルであり、一意の URL 名といくつかの統計を格納します。各 URL レコードに複数のタグを追加できます。これらのタグは「tags」テーブルに保存されます。もちろん、「url_has_tag」と呼ばれる URL とタグの間に接続テーブルがあります。
すべての url レコードのドメイン名、url 統計、および連結されたタグを選択するクエリがあります。
SELECT u.url_id, u.url, d.domain, u.hits, u.version, GROUP_CONCAT( t.label) as tags
FROM urls AS u
INNER JOIN domains AS d
ON (u.parent_id = d.domain_id)
LEFT JOIN url_has_tag AS ut ON u.url_id = ut.url_id
LEFT JOIN tags as t ON ut.tag_id = t.tag_id
GROUP BY u.url_id
ORDER BY u.hits DESC
ここで、タグによるフィルタリング結果を追加する必要があります。つまり、同じ情報を選択しますが、タグでタグ付けされた URL のみを選択します。他のタグも付けられるので、結果に他のタグを含めたいと思います。
グループ化する前に WHERE 句を追加するとWHERE ut.tag_id = 7
、正しい行が選択されますが、他のタグは含まれません (予想どおり)。
誰でもこれで私を助けることができますか?どうもありがとうございました。