在SQL连接方面,我仍然相当环保。下面的代码可以工作,但我希望在将错误复制并粘贴到其他工作之前,检查我是否正在以最佳方式执行此操作。
以下代码的想法是从第一个表获取PropertyID
和属性的名称并使用PropertyID
联接他们。在这种情况下,我实际上正在使用表B中的每个字段(因此是*)。
同行评审比任何事情都要多。
SELECT TblA.propertyid AS PD,
TblA.propertyname AS PD,
TblB.*
FROM tbpropertydetails AS TblA
INNER JOIN tbpropertydetailssafeguarding AS TblB
ON TblA.propertyid = TblB.propertyid
WHERE TblA.regionid <> '0'
ORDER BY TblA.propertyid ASC
我在VB.net中编程,但这实际上是独立的SQL。
答案 0 :(得分:1)
一般情况下,您希望谨慎使用内部联接,因为您可能会丢失潜在的记录集。
一个例子是TbPropertyDetails
中没有TbPropertyDetailsSafeguarding
中的条目(没有匹配的PropertyId)的记录会消失。加入表中可能没有相应的条目,因为此信息是在以后输入的。
首先尝试使用LEFT JOIN
,然后决定如何处理空记录,即主表中那些在连接表中具有匹配记录的记录。