当我执行特定标记的搜索查询时,我无法从'catalog_tag'表中返回多个'标记'。如果我在'catalog.catalog_id'上搜索,我会通过内连接获得所有相关标签。有没有办法在搜索特定标签时抓取标签?
表:
catalog table has: catalog_id|name|post_date
catalog_tag_relationship has: catalog_id|tag_id
catalog_tag has: tag_id|tag_name
SQL:
SELECT catalog_id, name, tag.tag_id, tag.tag_name
FROM catalog
INNER JOIN catalog_tag_relationship tagRel ON (tagRel.catalog_id=catalog.catalog_id)
INNER JOIN catalog_tag tag ON (tagRel.catalog_tag_id=tag.tag_id)
WHERE (tag.tag_name='dinosaurs')
答案 0 :(得分:1)
修订:
SELECT
catalog.catalog_id,
catalog.name,
tag.tag_id,
tag.tag_name
FROM (
SELECT
catalog.catalog_id as search_id
FROM catalog
INNER JOIN catalog_tag_relationship tagRel
ON tagRel.catalog_id=catalog.catalog_id
INNER JOIN catalog_tag tag ON tagRel.catalog_tag_id=tag.tag_id
WHERE tag_name='dinosaurs'
GROUP BY catalog.catalog_id
) AS searchList
INNER JOIN catalog ON catalog.catalog_id = search_id
INNER JOIN catalog_tag_relationship tagRel
ON tagRel.catalog_id=catalog.catalog_id
INNER JOIN catalog_tag tag ON tagRel.catalog_tag_id=tag.tag_id
编辑:这应该返回与从catalog
表中选择单个列表相同的结果。
步骤1:查找目录ID的匹配搜索条件列表。
步骤2:填写步骤1中找到的目录ID的所有目录信息。
这将为每个商品返回多行,但每个唯一目录只返回1行< - >标签映射。如果您希望每个目录有一行,则需要GROUP_CONCAT()
才能查看该目录的所有不同标记。