Я «унаследовал» более 10-летнее приложение, и оно иногда показывает его возраст. Сегодня я наткнулся на действительно странное определение представления - я просто не могу понять это! Вы можете мне помочь? Первоначально он был на SQL Server 7.0 и с тех пор был перенесен на SQL Server 2005 - но, очевидно, он никогда не подвергался рефакторингу / переделке ....
Это определение представления - на основе набора таблиц и другого представления:
CREATE VIEW dbo.MyOddView
AS
SELECT
t1.MVOID, t1.SomeOtherColumn,
t2.Number ,
t3.OID, t3.FKOID,
t4.AcctNo,
t5.ShortDesc, t5.ZipCode, t5.City,
t6.BankAcctNo
FROM
dbo.viewFirst vf
INNER JOIN
dbo.Table1 t1 ON vf.MVOID = t1.MVOID AND vf.ValidFrom = t1.ValidFrom
LEFT OUTER JOIN
dbo.Table2 t2
RIGHT OUTER JOIN
dbo.Table3 t3 ON t2.OID = t3.FKOID
LEFT OUTER JOIN
dbo.Table4 t4 ON t3.ZVOID = t4.OID
LEFT OUTER JOIN
dbo.Table5 t5
INNER JOIN
dbo.Table4 t6 ON t5.OID = t6.BCOID
ON t4.ZVOID = t5.OID
ON t2.AddressOID = t4.OID
GO
То, что я не получаю, это два JOIN (для Table2 t2
и Table5 t5
), у которых нет перечисленных ниже условий JOIN, и два дополнительных условия ON
в конце определения представления - I кажется, не могу разорвать это на части и соединить обратно в «правильный» синтаксис ANSI JOIN, чтобы мое число строк было одинаковым ...... (мое исходное представление дает мне что-то более 12 000 строк, и первое попытка рефакторинга вернула одну строку ......)
Есть идеи? Что, черт возьми это? Мне кажется, что это совершенно недопустимый SQL - но он, кажется, выполняет свою работу (и это было в течение последних нескольких лет ...). Есть мысли? Указатели