Page 128 - SQL
P. 128

left | right | inner JOIN LATERAL


        SQL-Server:

              CROSS | OUTER APPLY


        INNER JOIN LATERAL is the same as CROSS APPLY
        and LEFT JOIN LATERAL is the same as OUTER APPLY

        Example usage (PostgreSQL 9.3+):


         SELECT * FROM T_Contacts

         --LEFT JOIN T_MAP_Contacts_Ref_OrganisationalUnit ON MAP_CTCOU_CT_UID = T_Contacts.CT_UID AND
         MAP_CTCOU_SoftDeleteStatus = 1
         --WHERE T_MAP_Contacts_Ref_OrganisationalUnit.MAP_CTCOU_UID IS NULL -- 989


         LEFT JOIN LATERAL
         (
             SELECT
                  --MAP_CTCOU_UID
                  MAP_CTCOU_CT_UID
                 ,MAP_CTCOU_COU_UID
                 ,MAP_CTCOU_DateFrom
                 ,MAP_CTCOU_DateTo
            FROM T_MAP_Contacts_Ref_OrganisationalUnit
            WHERE MAP_CTCOU_SoftDeleteStatus = 1
            AND MAP_CTCOU_CT_UID = T_Contacts.CT_UID

             /*
             AND
             (
                 (__in_DateFrom <= T_MAP_Contacts_Ref_OrganisationalUnit.MAP_KTKOE_DateTo)
                 AND
                 (__in_DateTo >= T_MAP_Contacts_Ref_OrganisationalUnit.MAP_KTKOE_DateFrom)
             )
             */
            ORDER BY MAP_CTCOU_DateFrom
            LIMIT 1
         ) AS FirstOE


        And for SQL-Server


         SELECT * FROM T_Contacts

         --LEFT JOIN T_MAP_Contacts_Ref_OrganisationalUnit ON MAP_CTCOU_CT_UID = T_Contacts.CT_UID AND
         MAP_CTCOU_SoftDeleteStatus = 1
         --WHERE T_MAP_Contacts_Ref_OrganisationalUnit.MAP_CTCOU_UID IS NULL -- 989

         -- CROSS APPLY -- = INNER JOIN
         OUTER APPLY    -- = LEFT JOIN
         (
             SELECT TOP 1
                  --MAP_CTCOU_UID
                  MAP_CTCOU_CT_UID
                 ,MAP_CTCOU_COU_UID
                 ,MAP_CTCOU_DateFrom



        https://riptutorial.com/                                                                             110
   123   124   125   126   127   128   129   130   131   132   133