Страница 2 из 2

Re: Какой паттерн лучще использовать?

Добавлено: 2020.01.05, 03:37
anton_z
user писал(а): 2020.01.04, 21:56 а не получатся потому что идет запрос с бд, он очень сложный и ar он просто не вытянет, сфера применения ar ограничена
Если можно, лучше в тему опубликуйте, чтобы все видели, что там за запрос такой

Re: Какой паттерн лучше использовать?

Добавлено: 2020.01.05, 04:05
user
я изменил имена, в таблицах нет первичных ключей и автоинкремента и миллион связей, много бинарных данных

Код: Выделить всё

SELECT
RIGHT (CONVERT(CHAR(34), (T1.field1), 1), 32) AS alias1,                                                    
T1.field2 AS alias2,                                                                                      
DATEDIFF(s, '1970-01-01 00:00:00', CONVERT(VARCHAR, (DATEADD (yyyy, -2000, T1.field3)), 20)) AS alias3, 
DATEDIFF(s, '1970-01-01 00:00:00', CONVERT(VARCHAR, (DATEADD (yyyy, -2000, T1.field4)), 20)) AS alias4,  
CASE
	 WHEN T9.field5 = 1
	 THEN T5.field6*1000
	 ELSE T5.field7
END AS alias5,            

T7.field8 AS alias6, 
CASE
	 WHEN T9.field49 = 1
	 THEN CAST(T6.field9/1000 AS DECIMAL(10,2))
	 ELSE T6.field10
END AS alias7,              
T3.field111 AS alias8,  
T3.field12 AS alias10,  
'' AS alias11, 
T3.field13 AS alias12,  
T3.field14 AS alias13,                                                                               
T4.field15 AS alias14,  
T4.field16 AS alias15,  
'' AS alias16,  
T4.field17 AS alias17,  
T4.field18 AS alias18, 
T5.field19 AS alias19,                                                                                  
T2.field20 AS alias20,
T10.field21 AS alias21,
T2.field22 AS alias22,
T1.field23 AS alias23                                                                            
FROM db.dbo.table1 T1
LEFT OUTER JOIN db.dbo.table2 T2 ON (T2.field24 = T1.field25)
LEFT OUTER JOIN db.dbo.table3 T3 ON (T3.field25 = T2.field27)
LEFT OUTER JOIN db.dbo.table4 ON (T4.field28 = T2.field29)
LEFT OUTER JOIN db.dbo.table5 T5 ON (T5.field30 = T2.field31)
LEFT OUTER JOIN db.dbo.table6 T6 ON (T6.field32 = T2.field33)
LEFT OUTER JOIN db.dbo.table7 T7 ON (T7.field34 = T6.field35)
LEFT OUTER JOIN db.dbo.table8 T8 ON (T8.field36 = T6.field37)
LEFT OUTER JOIN db.dbo.table9 T9 ON (T9.field38 = T8.field39)    
LEFT OUTER JOIN db.dbo.table10 T10 ON (T10.field40 = T1.field41)    
WHERE T1.field42 = 1
AND T1.field43 = 1
AND T1.field44 = 0
AND (T2.field45 = 1 OR T5.field45 = 1 OR T6.field47 = 1)
ORDER BY T1.field48 DESC

Re: Какой паттерн лучше использовать?

Добавлено: 2020.01.06, 11:29
anton_z
Этот запрос можно попытаться сделать через ActiveQuery, тем более, что список для SELECT фиксирован. Сделать distinct по id основной таблицы table1 и все получится с AR. Все остальные присоединяемые таблицы каким отношением с table1? Запрос на самом деле не сложный, даже ни одного подзапроса нет.

Re: Какой паттерн лучше использовать?

Добавлено: 2020.01.08, 09:25
user
Спустя время вижу, что запрос не сложный, есть и с подзапросами
единственное id нет в таблицах