对2个表进行SQL查询验证

对2个表进行SQL查询验证,sql,sql-server,Sql,Sql Server,我正在尝试运行查询以从下表中获取以下结果 基本车辆表 车辆表 结果表 如果记录处于活动状态,则DeleteDate在此为空 基本车辆一->车辆多之间存在一对多映射 我需要查询以获取基本车辆ID未映射到车辆表的记录,以及与基本车辆关联的所有车辆(其中DeleteDate不为null)的记录。请让我知道我如何做到这一点 我只需要获取所有相关车辆Id的基本车辆Id的deleteDate不为空,就像车辆表中的BaseVehicleId=2一样,我不应该读取结果集中BaseVehicleId=3的值 有时

我正在尝试运行查询以从下表中获取以下结果

基本车辆表

车辆表

结果表

如果记录处于活动状态,则DeleteDate在此为空

基本车辆一->车辆多之间存在一对多映射

我需要查询以获取基本车辆ID未映射到车辆表的记录,以及与基本车辆关联的所有车辆(其中DeleteDate不为null)的记录。请让我知道我如何做到这一点

我只需要获取所有相关车辆Id的基本车辆Id的deleteDate不为空,就像车辆表中的BaseVehicleId=2一样,我不应该读取结果集中BaseVehicleId=3的值


有时候你应该想相反的方式

首先,我们必须从Vehicle表中查询所有未设置DeleteDate字段的记录。我们应该排除那些与之相关的记录和基本车辆。这意味着我们将只获得车辆表中不存在的BaseVehicleId,或者这些ID的所有记录都设置了DeleteDate


因此,您希望将未映射的BaseVehicles的BaseVehicles ID映射到Vechicle表,并在Vehicle表中使用Delete Date not null的映射BaseVehicleID???@Sujith是的,感谢您的回复是的+1.我误解了问题的一部分。谢谢你,波沃:它工作得很好
BaseVehicleId   DeleteDate

1   NULL
2   NULL
3   NULL
4   NULL
VehicleId   BaseVehicleId   DeleteDate

1   1   NULL
2   1   NULL
3   2   08-01-2017
4   3   NULL
5   3   08-01-2017
6   3   NULL
7   1   NULL
8   2   08-01-2017
BaseVehicleId

2
4
SELECT BaseVehicleId
FROM BaseVehicle
WHERE BaseVehicleId NOT IN (SELECT BaseVehicleId FROM Vehicle WHERE DeleteDate IS NULL)