【问题标题】:Inner-Join query is returning no data内部联接查询不返回任何数据
【发布时间】:2015-04-08 17:48:41
【问题描述】:

尝试运行一个查询,该查询构建一个报告列表,所有报告都存储了有关它们的信息。当我在没有 INNER JOIN 部分的情况下运行此查询时,它工作正常,并且有一个报告列表,其中分别显示了它们的信息。当我尝试使用插入的 INNER JOIN 查询运行它时,它不返回任何数据。两张表中肯定都有数据,不知道可能是什么问题。谢谢。

这是在添加 INNER JOIN 方法之前有效并返回数据的查询:

SELECT reports_tbl.photoname
    , reports_tbl.location
    , reports_tbl.details
    , reports_tbl.image
    , reports_tbl.spotteddate
    , reports_tbl.uploaddate
    , typesofphoto_tbl.typename 
FROM reports_tbl 

这是不返回包含 INNER JOIN 的数据的查询:

SELECT reports_tbl.photoname
     , reports_tbl.location
     , reports_tbl.details
     , reports_tbl.image
     , reports_tbl.spotteddate
     , reports_tbl.uploaddate
     , typesofphoto_tbl.typename 
FROM reports_tbl 
INNER JOIN typesofphoto_tbl 
ON reports_tbl.typeofphotoID = typesofphoto_tbl.ID

【问题讨论】:

  • 但是他们有对应的id匹配吗?
  • 您可以尝试查询...检查是否有任何公共数据
  • 连接列的数据类型有什么奇怪的吗?假设您已检查每个表中至少有一行该 ID 实际匹配...
  • 我不确定你的意思詹姆斯
  • 如果切换到外连接会得到什么结果?是否存在所有列中都有数据的行?

标签: asp.net .net sql-server asp.net-mvc


【解决方案1】:

INNER JOIN:当两个表中至少有一个匹配时,返回所有行。

LEFT JOIN:返回左表的所有行,以及匹配的 rows from the right table RIGHT JOIN:从右边返回所有行 表,以及左表中的匹配行 FULL JOIN:当其中一个表匹配时返回所有行

所以,当您使用 Inner Join 时,reports_tbltypesofphoto_tbl 表中都没有匹配项,这就是您无法获取数据的原因。

试试LEFT-JOIN

SELECT reports_tbl.photoname
     , reports_tbl.location
     , reports_tbl.details
     , reports_tbl.image
     , reports_tbl.spotteddate
     , reports_tbl.uploaddate
     , typesofphoto_tbl.typename 
FROM reports_tbl 
LEFT JOIN typesofphoto_tbl 
ON reports_tbl.typeofphotoID = typesofphoto_tbl.ID

如果右表typesofphoto_tbl中没有匹配的行,您将从左表reports_tbl获取记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-12
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多