LEFT JOIN(SELECT FROM WHERE >来自另一个 JOIN 的值 table<)

LEFT JOIN (SELECT FROM WHERE >Values from another JOIN'ed table<)

我正在尝试在 table 上执行多个左联接以检索一行信息。

FROM THeaders th

    LEFT JOIN (SELECT * FROM TItems) ti
                  ON th.rtid = ti.rtid

LEFT JOIN (SELECT TOP 1 MC, GH, GC, DI, DC FROM Prod **WHERE ti.MC = MC**) p
      ON ti.MC = p.MC AND (ti.AI IS NULL OR EXISTS (SELECT * FROM Prod WHERE MC = ti.MC))

想法是从 'ti' 中获取所有信息,并且仅从 'p' table 中的一行中获取 MC 等于 ti.MC 的信息。 'p' table 包含具有相同 MC 的数百行,但可以假定所有其他字段具有相同的值(GH、GC、DI、DC)

标有星号的部分是我遇到问题的部分。我认为这是因为,作为错误 "ti.MC could not be bound says",与 'ti' 的连接尚未初始化,因此不能在另一个连接的 select 中使用。

有什么方法可以实现吗?我目前的工作是看看我是否可以使用嵌套连接或可能设置一个变量来使用,但目前都没有结果。

谢谢

Sql Server中,它是用APPLY运算符完成的。像这样:

FROM THeaders th
LEFT JOIN TItems ti ON th.rtid = ti.rtid
OUTER APPLY (SELECT TOP 1 MC, GH, GC, DI, DC FROM Prod WHERE ti.MC = MC) oa