我正在尝试更好地理解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
部分,它会提供CustomerData
和csCIDPull
表中的信息。我的思维方式可能不正确。我让5个表都带有一个int ID,这些ID也提交到一个表来组合所有表(MAIN表只包含ID,而其他表包含数据)。
想想我会向你们大家发帖,看看我可能做错了什么。谢谢
答案 0 :(得分:9)
检查有关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中的记录,则应考虑使用外连接