Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:SQL连接的帮助_Sql_Mysql_Join - Fatal编程技术网

SQL:SQL连接的帮助

SQL:SQL连接的帮助,sql,mysql,join,Sql,Mysql,Join,嗨,我有一个应用程序,有帖子,标签和标签参考链接表。我想查询具有特定标记关联的帖子 数据库结构如下: 帖子 身份证 标记\u ref 行id 桌子 标签号 标签 身份证 安全标签 标签 我的查询基本上是这样的:如果$safe\u tag不为null,那么就在post.id=tags\u ref.row\u id上加入tags\u ref,在tags\u ref.tag\u id=tags.id上加入tags,其中tags\u ref.table='posts'和tags.safe\u tag='

嗨,我有一个应用程序,有帖子,标签和标签参考链接表。我想查询具有特定标记关联的帖子

数据库结构如下:

帖子

身份证

标记\u ref

行id

桌子

标签号

标签

身份证

安全标签

标签

我的查询基本上是这样的:如果$safe\u tag不为null,那么就在post.id=tags\u ref.row\u id上加入tags\u ref,在tags\u ref.tag\u id=tags.id上加入tags,其中tags\u ref.table='posts'和tags.safe\u tag='food'和post.city\u 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
表的结果,而不是连接表中的所有列。我已经删除了您在问题文本中未指定的
city\u id
约束(这是您在查询中指定的):

我还添加了表别名并删除了引号


如果你没有得到任何结果,那就意味着我没有关于
食品的帖子

为什么你要引用所有的表名和列名?你的意思是要有
city\u id
约束吗?@Oded,这是codeigniter评测功能的打印输出你的查询有效,尽管我确实希望有一个city\u id约束。每个帖子都有一个不为空的city_id字段。你的问题和我的有什么不同?除了那张照片,我什么也看不见alisases@iamjonesy-除上述差异外,无差异。但是,如果您的
city\u id
是一个整数类型,则应在查询时不加引号:
和P.city\u id=2
。如果这仍然不起作用,请检查您的数据。
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'