首页 > 解决方案 > 从相关或不相关的表中获取结果

问题描述

我在该表中有一个表 4 列 Id、FirmId、OfficeId、PlanID 数据如下所示

Id  FirmId  OfficeId    PlanID
-----------------------------------------
1   54      NULL        4
2   54      3           9
3   54      5           8
4   54      6           6
5   54      7           9
6   54      8           8   

我在 FirmOfficePlan 中有 4 表公司、办公室、计划、FirmOfficePlan 包含公司计划和办公室计划,如公司 54 有 10 个办公室 公司 54 有一个计划 id = 4 和办公室 id = NULL

但是在 Office of 54 的某些部分有不同的计划,例如 Office 3 的计划 ID = 9,Office 5 的计划 ID = 8,Office 6 的计划 ID = 6

所以办公室的其他人有一个推荐计划= 4(这是为公司配置的)

所以我想得到下面所有办公室的结果

Id  FirmId  OfficeId    PlanID
--------------------------------------
1   54      1           4
1   54      2           4
2   54      3           9
3   54      5           8
4   54      6           6
5   54      7           9
6   54      8           8
1   54      9           4
1   54      10          4

我有 80000 多家公司和 30 到 40 个办公室,在这种情况下,每家公司的工作速度会很慢
以下是我的查询,但我不满意

SELECT  A.Firm_Id,
        A.Office_id,
        PricingPlanId = COALESCE(B.PlanId,A.PlanId)
FROM    (SELECT A.Firm_Id,O.Office_id,A.PlanId  
        FROM    Firm F
                Inner Join Office O ON  O.Firm_Id = F.Firm_Id
                Left Join FirmOfficePlan A ON A.Firm_Id = F.Firm_ID 
                                                      AND A.Office_Id IS Null   
        WHERE   F.Firm_ID = 54)A
        LEFT JOIN FirmOfficePlan B ON A.Firm_ID  = B.Firm_ID 
                                               AND A.Office_id =  B.Office_Id
                                               AND B.Office_Id IS NOT NULL

标签: sql

解决方案


推荐阅读