【问题标题】:Error on INNER JOIN queryINNER JOIN 查询出错
【发布时间】:2015-03-10 21:18:14
【问题描述】:

我遇到了这个问题: 我有三张桌子: users :包含所有用户信息和主键 图库:包含用户 ID 和图像 ID 之间的关系 photoes :包含照片 id 和 url(照片存储在服务器上的位置)

这是三个表的示例

表名:用户
name_surname     ||乔   ||约翰 ||
电子邮件                     ||joe@..||约翰@..||
等等...
id (主键) || 1 || 2 ||

表名:图库
id             || 1 || 1 ||
image_id || 1 || 2 ||
表名:Photoes
id              || 1          || 2            ||
网址            ||pht1.jpg||phot2.jpg||

问题是我在下面进行了这个查询,但它返回 null,它应该返回用户 ID 与登录站点的用户 ID 类似的所有 url

"SELECT gallery.url
 FROM photoes
 JOIN gallery ON users.id = gallery.id
 JOIN photoes ON gallery.image_id = photoes.id"

我认为问题可能出在 INNER JOIN 查询语法中,有人可以帮我吗? 感谢您未来的回答 祝你今天过得愉快 卢卡

【问题讨论】:

  • 查询甚至没有解析。你有photoes 声明了两次,users 表根本没有。那ON users.id = gallery.id 应该是ON users.id = gallery.user_id
  • 如果可能的话,请修正照片表名中的拼写错误。如果你离开,你的开发者会永远恨你。
  • 在发布自己的问题之前,可以先阅读其他人提出问题的努力。

标签: mysql database inner-join


【解决方案1】:

您将 photoes [原文如此] 加入到自身中,而没有提及 table 用户。试试这个:

SELECT gallery.url
 FROM users
 JOIN gallery ON users.id = gallery.id
 JOIN photoes ON gallery.image_id = photoes.id

顺便说一下,gallery.id 的更标准名称是 gallery.user_id,以显示它引用的位置。您可能还想修正photos 的拼写。

【讨论】:

  • 感谢拼写问题?,但问题仍然存在
  • 要明确的是,问题是您得到 NULL 回来(正如您在问题中所说)还是您正在获取所有记录,无论它们附加到哪个用户?我注意到您说“用户 id 就像登录网站的用户的 id”,并且在任何查询中都没有考虑到这一点......
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多