2

当我对特定标签执行搜索查询时,我无法从“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') 
4

1 回答 1

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()查看该目录的所有不同标签。

于 2012-12-19T21:11:20.010 回答