我有一个表引擎(eball),一个有损坏的表(dv)和一个安装了服务产品(sp)的表。每台发动机可能有多种损坏和多种服务产品。
现在我想创建一个包含所有损坏的查询,其引擎信息以及是否安装了服务产品“Retrofit”,以及服务产品Retrofit的信息。
下面的我的SQL是错误的,因为我没有安装其他服务产品的损害赔偿。如果我不包括这个where子句,我会为每个安装了相同损坏的服务产品获得一行(等于损坏)???
SELECT *
FROM
dbo.EPI_EB2S_damage_report_v as dv
LEFT OUTER JOIN dbo.EPI_all_v as eball ON dv.DB_NO = eball.DB_NO
LEFT OUTER JOIN dbo.ServiceProducts sp ON dv.DB_NO = sp.DB_NO
WHERE (sp.SERVICE_PRODUCT_NAME = 'Retrofit Pulse' OR sp.SERVICE_PRODUCT_NAME is NULL OR sp.SERVICE_PRODUCT_NAME = '')
答案 0 :(得分:1)
看起来我喜欢你需要的东西:
SELECT * FROM
dbo.EPI_EB2S_damage_report_v as dv
LEFT OUTER JOIN dbo.EPI_all_v as eball ON dv.DB_NO = eball.DB_NO
LEFT OUTER JOIN dbo.ServiceProducts sp ON dv.DB_NO = sp.DB_NO AND sp.SERVICE_PRODUCT_NAME = 'Retrofit Pulse'