代码之家  ›  专栏  ›  技术社区  ›  Pablo

使用SQL将类别与标记关联起来

  •  0
  • Pablo  · 技术社区  · 14 年前

    我希望能够找到某个类别下的项目标签。以下是我的数据库设计示例:

          images
          +----------+-----+-------------+-----+
          | image_id | ... | category_id | ... |
          +----------+-----+-------------+-----+
          |    1     | ... |     11      | ... |
          +----------+-----+-------------+-----+
          |    2     | ... |     12      | ... |
          +----------+-----+-------------+-----+
          |    3     | ... |     11      | ... |
          +----------+-----+-------------+-----+
          |    4     | ... |     11      | ... |
          +----------+-----+-------------+-----+
    
          images_tags
          +----------+--------+
          | image_id | tag_id |
          +----------+--------+
          |     1    |   53   |
          +----------+--------+
          |     3    |   54   |
          +----------+--------+
          |     2    |   55   |
          +----------+--------+
          |     1    |   56   |
          +----------+--------+
          |     4    |   57   |
          +----------+--------+
    

    标记和类别都有自己的表,将id与实际名称(文本)相关联。 所以我的问题是,我怎样才能发现 category_id =11拥有 tag_id 53 54 56 57.

    换句话说,如何找到某个类别中的图像所具有的标签?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Lars Andren    14 年前

     SELECT tag_id FROM images_tags WHERE image_id IN (SELECT image_id FROM images WHERE cateory_id = 11 )
    
        2
  •  0
  •   f13o    14 年前

    试试这个:

    SELECT images.*, tags.* from images, tags where images.image_id = images_tags.image_id and  images.category_id = X;
    

    其中X是所需类别。