我有以下表格:
标签:
| id | title |
类别:
| tag_id (FK tags.id) | category_tag_id (FK tags.id) |
category_tag_id引用tags.id,因为我们重新使用了tags表(我们可以简单地使用此表为类别指定一个类别
文章
| id | title | body | etc... |
articles_tags
| article_id (FK articles.id) | tag_id (FK tags.id) |
我尝试创建一个查询,选择与此技能相关的所有类别。我们通过搜索 articles_tags 表中链接的标记来获取类别,然后我们只需要通过选中类别表来检查与这些标记关联的类别。< / p>
以下是我尝试的内容
select tags.*
FROM tags
INNER JOIN categories ON tags.id = categories.tag_id
INNER JOIN article_tags ON article_tags.article_id = ID_OF_ARTICLE_WE_WANT_CATEGORIES_FROM
我也试过添加
where article_id = ID_OF_ARTICLE_WE_WANT_CATEGORIES_FROM
但是,此查询似乎返回所有类别,而不仅仅是与技能相关的类别。
答案 0 :(得分:0)
select tags.*
FROM tags
INNER JOIN categories ON tags.id = categories.tag_id
INNER JOIN article_tags ON article_tags.article_id = ID_OF_ARTICLE_WE_WANT_CATEGORIES_FROM
在您的查询中,表article_tags实际上并未连接到任何其他内容。查看您提供的架构,似乎article_tags
与tags
相关(article_tags.tag_id
- &gt; tags.id
)
尝试此查询:
SELECT tags.*
FROM tags
INNER JOIN categories ON tags.id = categories.tag_id
INNER JOIN article_tags ON article_tags.article_id = tags.id
WHERE article_tags.article_id = :user_input