1

我试图更好地理解 SQL 数据库中的 JOIN 或 INNER JOIN 多个表。

这是我所拥有的:

SQL查询:

SELECT *
FROM csCIDPull
INNER JOIN CustomerData ON CustomerData.CustomerID = csCIDPull.CustomerID
    INNER JOIN EMSData ON EMSData.EmsID = csCIDPull.EmsID
;

这不会返回任何结果,如果我删除该INNER JOIN EMSData部分,它会提供来自CustomerDatacsCIDPull表格的信息。我的思维方式可能不正确。我假设 5 个表都具有一个 int ID,这些 ID 也提交到一个表以组合所有表(主表仅包含 ID,而其他表包含数据)。

我想我会向你们发帖的人开枪,看看我可能做错了什么。-谢谢

4

3 回答 3

11

在此处输入图像描述

检查这个关于 SQL 连接

于 2013-07-15T06:43:20.303 回答
1

基本上听起来您的 EMSData 表中没有匹配的数据。您需要为此使用 an OUTER JOIN

SELECT *
FROM csusaCIDPull
    LEFT JOIN CustomerData ON CustomerData.CustomerID = csCIDPull.CustomerID
    LEFT JOIN EMSData ON EMSData.EmsID = csCIDPull.EmsID

SQL 连接的可视化解释

旁注:考虑不返回*,而是从每个表中选择所需的字段。

于 2013-07-15T03:12:57.520 回答
0

在这个答案中涵盖外连接和内连接太多了,但我将从研究两者之间的区别开始:

这是一个简短的开始:

内连接要求您拥有满足连接条件的数据。如果您出于某种原因在 EMSData 和 csCIDPull 中没有任何具有通用 EmsID 的记录 - 根本不会返回任何记录。如果是这种情况,如果您仍希望 CustomerData 中的记录独立于 EMDData 连接返回,则应考虑使用外连接

于 2013-07-15T02:38:37.993 回答