SQL 查询帮助条件连接

SQL Query Help Conditional Join

假设我有三个表:

组Table

OGID OGC OGCD
56 300 TAS
81 TA CAL

结构Table

OSID L1D L2D
44 56 81

合同

ContractID
44

我提供了 ContractID,我想创建一个 Table 具有以下内容:

ContractID Structure L1D Structure L2D Group OGID Group OGC Group OGCD Group OGID Group OGC Group OGCD
44 56 81 56 300 TAS 81 TA CAL

在 SQL 中解决此问题的最佳方法是什么? 还有一个问题是 L2D 可以为空,每当我尝试使用 INNER JOIN 语句来连接表时,NULL 语句都会被忽略。

SELECT
Contract.ContractID, Structure.L1D, Structure L2D, Group.OGID, Group.OGC, Group.OGID, Group2.OGID, Group2.OGC, Group2.OGID,
FROM
(
SELECT Structure.OSID, Structure.L1d, Group.OGID, Group.OGC, Group.OGCD
FROM Structure
INNER JOIN Group
ON (Structure.L1D = Group.OGID)
) T1
INNER JOIN 
(
SELECT Structure.OSID, Structure.L1D, Group2.OGID, Group2.OGC, Group2.OGCD
FROM Structure
INNER JOIN Group2
ON (Structure.L2D = Group2.OGID)
) T2
ON (T1.OSID = T2.OSID OR T2.OSID = NULL)

DBFIDDLE

SELECT
  s.OSID,
  s.L1D,
  s.L2D,
  g1.OGID,
  g1.OGC,
  g1.OGCSD,
  g2.OGID,
  g2.OGC,
  g2.OGCSD
  
FROM structure s
LEFT JOIN `group` g1 ON g1.OGID = s.L1D
LEFT JOIN `group` g2 ON g2.OGID = s.L2D

DBFIDDLE 还显示了当 L2D 的值为 NULL 时发生的情况。

P.S。通常你不应该使用,或者至少尽量避免,Reserved Words 作为 table 名字,比如 GROUP.