2013-12-13 5 views
0

Я в процессе преобразования некоторых запросов MS Access в формат Transact-SQL и столкнулся с некоторыми проблемами. Есть ли способ написать Join в Join?
Например:Право Присоединиться к левому Присоединиться к SQL Server Query

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

Это просто снимок гораздо большего запроса, конечно. Но, если кто-нибудь знает, возможно ли это, любая помощь будет большой.

Заранее благодарен.

+2

SQL Server должен быть в порядке с конкретным примером синтаксиса, который вы здесь указали. Вы просто пытались запустить этот запрос? –

ответ

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; 
4

Я склонен, как все мои присоединяется быть последовательными и течет в том же направлении, когда это возможно (и я стараюсь всегда изменить порядок вещей, так что возможное). LEFT JOIN/RIGHT JOIN/ON/ON очень смущает следовать за кем угодно, включая меня, и я делаю это очень долго. Доступ, конечно же, никому не дает никаких преимуществ с необычным синтаксисом, который он выкачивает (и принимает).

Я не уверен, что текущий синтаксис обеспечивает ожидаемые результаты, но можете ли вы сравнить этот формат, чтобы убедиться, что они одинаковые? Трудно знать точно без данных образца и желаемых результатов.

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; 
+0

+1 Для записи последовательно соединяется и течет одинаково. SQL легче понять и «визуализировать» таким образом. – Shiva

+0

Не должно быть ?: 'FROM dbo.HandPay AS hp LEFT OUTER JOIN dbo.TaxInfoJackPot AS jp ...' –

+0

@ypercube Я принял удар; без всего запроса, я не уверен. Для всех, кого мы знаем, запрос начинается с FROM HandPay RIGHT JOIN somethingElse –

Смежные вопросы