【问题标题】:InnerJoin not showing any output while it shows output without innerJoin内部联接不显示任何输出,而显示没有内部联接的输出
【发布时间】:2016-01-24 15:12:01
【问题描述】:

所以我正在为学校做作业,但遇到了一些奇怪的问题。

所以,如果我使用代码,基本上会发生什么

$mysqli = mysqli_connect("localhost", "root", "", "database3");
$sql = "SELECT * FROM review
   INNER JOIN admin
   ON review.adminID=admin.adminID
   ORDER BY review.reviewDate DESC LIMIT 3";
   $result = mysqli_query($con, $sql) or die(mysqli_error($con));

这是输出

但是,当我删除 InnerJoin 时,这是输出:

      $mysqli = mysqli_connect("localhost", "root", "", "database3");
      $sql = "SELECT * FROM review
      ORDER BY review.reviewDate DESC LIMIT 3";
      $result = mysqli_query($con, $sql) or die(mysqli_error($con));
      ?>

我该如何解决这个问题?

【问题讨论】:

  • admin 表中没有匹配的行。尝试左连接。
  • 你的html生成代码在哪里?
  • 我现在试试,然后报告!
  • 第二张图片中的错误是因为我删除了 Admin Table 的 InnerJoin。
  • 根据@jarlh 的评论,您不应该删除INNER JOIN,而是将其替换为LEFT JOIN

标签: php mysql sql inner-join


【解决方案1】:

如果没有看到您的表数据或调用 adminFirstName 的代码,很难判断,我认为这是对联接后返回的行中的字段的调用。

正如 jarlh 所说,您的第一步是尝试不同的连接,看看是否有任何匹配项。如果您尝试过但无济于事,则很可能:

review 中的 adminID 字段与 admin 表中的 adminID 字段结构不同。检查您的表格字段(“显示创建表格管理员”和相同的审核)。 adminID 字段都是整数吗?相同的容器大小(通常为 11 个自动增量),都是有符号的还是无符号的?两个名字拼写正确,等等。

如果它们是匹配的,那么检查显而易见的 - 这两个表中实际上是否有任何精确的 id 匹配?

【讨论】:

  • 检查拼写、数据类型和大小,除了自动递增之外,一切都相同。使用 Left-Join 它会显示除 adminFirstName 之外的所有内容,并且没有错误,例如 Inner Join 没有被 Left Join 替换。
  • 尝试直接在命令行上运行 SQL - 查看它在您需要的字段中实际返回的内容。如果没有错误,我怀疑它没有从 admin 表返回任何匹配项,这可以追溯到我上面的答案 - 两个表之间可能没有任何 id 匹配项。在两个表上执行选择 id 以确保确实存在匹配项,并且应该是数字字段中没有奇怪的字符或其他内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2015-07-29
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多