SQL INNER JOIN多个表未按预期工作

时间:2013-07-15 02:34:57

标签: sql database join inner-join

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

这就是我所拥有的:

SQL查询:

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

这将返回NO结果,如果我删除INNER JOIN EMSData部分,它会提供CustomerDatacsCIDPull表中的信息。我的思维方式可能不正确。我让5个表都带有一个int ID,这些ID也提交到一个表来组合所有表(MAIN表只包含ID,而其他表包含数据)。

想想我会向你们大家发帖,看看我可能做错了什么。谢谢

3 个答案:

答案 0 :(得分:9)

enter image description here

检查有关SQL连接的信息

答案 1 :(得分:1)

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

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

A Visual Explanation of SQL Joins

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

答案 2 :(得分:0)

在这个答案中覆盖外连接与内连接太多了,但我首先要研究两者之间的区别:

这是一个简短的启动者:

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