使用SQL将类别与标签相关联

时间:2010-06-01 23:44:10

标签: sql mysql

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

      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 个答案:

答案 0 :(得分:3)

也许一个内在的SELECT会做到这一点?类似的东西:

 SELECT tag_id FROM images_tags WHERE image_id IN (SELECT image_id FROM images WHERE cateory_id = 11 )

答案 1 :(得分:0)

试试这个:

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

其中X是所需类别。