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

Обсуждаем, как правильно строить приложения
anton_z
Сообщения: 469
Зарегистрирован: 2017.01.15, 15:01

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

Сообщение anton_z »

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

user
Сообщения: 154
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение 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

anton_z
Сообщения: 469
Зарегистрирован: 2017.01.15, 15:01

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

Сообщение anton_z »

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

user
Сообщения: 154
Зарегистрирован: 2017.12.05, 16:55

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

Сообщение user »

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

Ответить