我正在为一个 MySQL 查询而苦苦挣扎,我可以弄清楚。我有三个表,其中包含有关 url 地址的信息。
一,'domains',存储唯一的域名,这是'父'表到第二个表,'urls',存储唯一的urls名称和一些统计信息。每个 url 记录可以添加多个标签,这些标签存储在 'tags' 表中,当然还有 url 和标签之间的连接表,称为 'url_has_tag'。
我有为所有 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
它会选择正确的行,但不包括其他标签(如预期的那样)。
谁能帮我解决这个问题?非常感谢。