我正在尝试根据它们在另一个表中是否有多行来从帖子表中加载行。采用下表结构:
帖子
post_id post_title
-------------------
1 My Post
2 Another Post
post_tags
post_tag_id post_tag_name
--------------------------
1 My Tag
2 Another Tag
postTags
postTag_id postTag_tag_id postTag_post_id
------------------------------------------
1 1 1
2 2 1
不出所料, post 和 post_tags 存储了帖子和标签,而 postTags 则加入了哪些帖子有哪些标签。
我通常会做的加入表格是这样的:
SELECT * FROM (`posts`)
JOIN `postTags` ON (`postTag_post_id` = `post_id`)
JOIN `post_tags` ON (`post_tag_id` = `postTag_tag_id`)
然后我会有关于标签的信息,并且可以在查询的后面有额外的东西来搜索搜索词等的标签名称,然后在我有与搜索词匹配的帖子后进行 GROUP。
我想要做的只是从帖子中选择标签 1 和标签 2 的帖子,我无法为它计算出 SQL。我认为它需要在实际的 JOIN 中完成,而不是有一个 WHERE 子句,因为当我运行上面的连接时,我显然会得到两行,所以我不能有类似的东西
WHERE post_tag_id = 1 AND post_tag_id = 2
因为每一行只有一个 post_tag_id,我无法检查一行中同一列的不同值。
我试图做的是这样的:
SELECT * FROM (`posts`)
JOIN `postTags` ON (postTag_tag_id = 1 AND postTag_tag_id = 2)
JOIN `post_tags` ON (`post_tag_id` = `postTag_tag_id`)
但是当我运行它时返回 0 个结果;我之前在 JOINS 中为类似的事情设置了这样的条件,我确信它已经接近了,但如果这不起作用,我就无法确定该怎么做。
我至少在正确的轨道上吗?希望我没有遗漏一些明显的东西。
谢谢。