Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server查询中的左联接中的右联接_Sql Server_Join_Left Join_Right Join - Fatal编程技术网

Sql server SQL Server查询中的左联接中的右联接

Sql server SQL Server查询中的左联接中的右联接,sql-server,join,left-join,right-join,Sql Server,Join,Left Join,Right Join,我正在将一些MS Access查询转换为Transact-SQL格式,遇到了一些问题。有没有办法在联接中写入联接? 例如: LEFT JOIN (TaxInfo RIGHT JOIN TaxInfoJackpot ON TaxInfo.RefNumber = TaxInfoJackpot.RefNumber) ON HandPay.SlipNumber = TaxInfoJackpot.SlipNumber 当然,这只是一个更大查询的快照。但是,如果有人知道这是否可能

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

LEFT JOIN (TaxInfo RIGHT JOIN TaxInfoJackpot 
           ON TaxInfo.RefNumber = TaxInfoJackpot.RefNumber) 
ON HandPay.SlipNumber = TaxInfoJackpot.SlipNumber
当然,这只是一个更大查询的快照。但是,如果有人知道这是否可能,任何帮助都将是巨大的


提前感谢。

您可以通过子查询来完成此操作

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;

您可以通过子查询来实现这一点

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;

如果可能的话,我倾向于让我所有的连接都是顺序的,并朝着相同的方向流动(我总是尝试重新排序,这样才有可能)。左连接/右连接/开/关对任何人来说都是非常混乱的,包括我自己,我已经做了很长时间了。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;

如果可能的话,我倾向于让我所有的连接都是顺序的,并朝着相同的方向流动(我总是尝试重新排序,这样才有可能)。左连接/右连接/开/关对任何人来说都是非常混乱的,包括我自己,我已经做了很长时间了。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;

+1用于以相同方式顺序和流动写入连接。SQL更容易理解,也更容易通过这种方式“可视化”。应该是吗?:
从dbo.HandPay作为hp离开外部加入dbo.TaxInfoJackPot作为jp…
@ypercube我尝试了一下;如果没有整个问题,我不确定。据我们所知,查询以FROM HandPay RIGHT JOIN somethingElse+1开始,用于以相同的方式顺序和流动地写入连接。SQL更容易理解,也更容易通过这种方式“可视化”。应该是吗?:
从dbo.HandPay作为hp离开外部加入dbo.TaxInfoJackPot作为jp…
@ypercube我尝试了一下;如果没有整个问题,我不确定。据我们所知,该查询以FROM HandPay RIGHT JOIN somethingsql服务器开始,使用您在此处展示的特定语法应该可以。您刚刚试过运行那个查询吗?SQL Server应该可以使用您在这里展示的特定语法。你刚才试过运行那个查询吗?