简单/ ish命令

时间:2013-04-26 21:31:52

标签: sql command views

您使用哪种连接从父表和子表中选择数据,其中父表可能不包含子数据?

3 个答案:

答案 0 :(得分:1)

我认为你的问题更恰当地说明了:

  

如何在主表中查找子表中没有任何项目的项目?

这是SQL中一个非常常见的问题,并且有一个已知的解决方案......这适用于T-SQL(您需要始终说出您正在使用的内容)

select m.master_data, c.child_data
from master_table m
left outer join child_table c 
    on m.ID = c.ID
where c.child_data IS NULL

当子表中没有任何内容时,OUTER连接会在子表列中生成空值,因此您只需在子表中显示带空值的行即可。您不会在结果中显示子表中的任何列。

答案 1 :(得分:1)

有几种方法可以找到没有租约的房产。

  1. 在where子句

    中使用子查询
    select *
    from propertys
    where propertys.propertyID not in (select propertyID from lease);
    
  2. 或者,您可以在where子句

    中使用带有空检查的左连接
    select *
    from propertys
    left join lease on lease.propertyID = propertys.propertysID
    where lease.leaseID is null;
    

答案 2 :(得分:0)

SELECT 
p.* 
FROM
Property p
LEFT JOIN Lease l ON p.propertyid = l.propertyid
WHERE l.propertyid IS NULL