0

我正在将一些 MS Access 查询转换为 Transact-SQL 格式并遇到了一些问题。有没有办法在 Join 中编写 Join?
例如:

LEFT JOIN (TaxInfo RIGHT JOIN TaxInfoJackpot 
           ON TaxInfo.RefNumber = TaxInfoJackpot.RefNumber) 
ON HandPay.SlipNumber = TaxInfoJackpot.SlipNumber

当然,这只是一个更大查询的快照。但是,如果有人知道这是否可能,任何帮助都会很棒。

提前致谢。

4

2 回答 2

4

在可能的情况下,我倾向于喜欢我所有的连接都是连续的并且朝着同一个方向流动(并且我总是尝试重新排序,这样才有可能)。LEFT JOIN / RIGHT JOIN / ON / ON 对任何人来说都非常令人困惑,包括我自己,而且我已经这样做了很长时间。Access 当然不会对它抽出(并接受)的奇怪语法有任何好处。

我不确定当前的语法是否提供了您期望的结果,但是您可以与此格式进行比较以查看它们是否相同?如果没有样本数据和期望的结果,很难确定。

SELECT ...
  FROM dbo.TaxInfoJackPot AS jp
  LEFT OUTER JOIN dbo.HandPay AS hp
    ON hp.SlipNumber = jp.SlipNumber
  LEFT OUTER JOIN dbo.TaxInfo AS ti
    ON jp.RefNumber = ti.RefNumber;
于 2013-12-13T21:48:16.550 回答
0

您可以使用子查询来执行此操作。

LEFT JOIN (
    SELECT * 
    FROM TaxInfo ti
    RIGHT JOIN TaxInfoJackpot j ON ti.RefNumber = j.RefNumber
) tij ON HandPay.SlipNumber = tij.SlipNumber

但我不确定你是否真的需要这样做。我认为你可以用普通的连接来做到这一点

FROM HandPay h
RIGHT JOIN TaxInfoJackpot j ON h.SlipNumber = j.SlipNumber
LEFT JOIN TaxInfo ti ON j.RefNumber = ti.RefNumber;
于 2013-12-13T21:47:22.090 回答