[英]SQL: help with sql joins
嗨,我有一个具有帖子,标签和tag_ref链接表的应用。 我想查询具有特定标签关联的帖子。
数据库结构如下:
帖子
ID
tags_ref
row_id
表
tag_id
标签
ID
safe_tag
标签
我的查询基本上是如果$ safe_tag不为null,然后在post.id = tags_ref.row_id上加入tags_ref,在tags_ref.tag_id = tags.id上加入标签,其中tags_ref.table ='posts'和tags.safe_tag ='food'并且post.city_id = 2
这个查询正确吗? 我使用的连接类型正确吗?
SELECT *
FROM (`posts`)
INNER JOIN `tags_ref` ON `posts`.`id` = `tags_ref`.`row_id`
INNER JOIN `tags` ON `tags_ref`.`tag_id` = `tags`.`id`
WHERE `tags_ref`.`table` = 'posts'
AND `tags`.`safe_tag` = 'food'
AND `posts`.`city_id` = '2'
我得到的奇怪结果根本没有关联的标签。
谢谢
这将只返回posts
表中的结果,而不是join表中的所有列。 我已经删除了您尚未在问题文本中指定的city_id
约束(并且已在查询中指定):
SELECT P.*
FROM posts AS P
INNER JOIN tags_ref AS TR ON P.id = TR.row_id
INNER JOIN tags AS T ON TR.tag_id = T.id
WHERE TR.table = 'posts'
AND T.safe_tag = 'food'
我还添加了表别名并删除了引用。
如果您没有得到任何结果,那将向我暗示没有food
张贴。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.