Показать сообщение отдельно
Старый 25.07.2005, 18:09   #11  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Lightbulb Есть предложение
Строить такие запросы (2 и более OUTER JOIN к одному паренту) на Х++ для таблиц со свойством "SaveDataPerCompany" == "Yes" можно путем добавления фиктивной связи между дочерними таблицами по полю DataAreaId:

PHP код:
ChildTable2.DataAreaId == ChildTable1.DataAreaId || ChildTable2.DataAreaId != ChildTable1.DataAreaId 
Например, запрос из первого сообщения примет вид:

PHP код:
while
select SalesName
from contractTable

outer join NumOfDays
Description
from paymTerm
where paymTerm
.PaymTermId == contractTable.Payment

outer join Name
from emplTable
where 
(emplTable.DataAreaId == paymTerm.DataAreaId || emplTable.DataAreaId != paymTerm.DataAreaId) &&
emplTable.EmplId == contractTable.SalesResponsible 
Это, естественно, добавит работы парсеру SQL-сервера, но т.к. поле DataAreaId входит во все индексы таблиц со свойством "SaveDataPerCompany" == "Yes", то никаких побочных эффектов (кроме пренебрежимо малого падения скорости) быть не должно.

Аналогично для Query, если у вложенных датасоурсов свойство "FetchMode" == "1:1".
За это сообщение автора поблагодарили: bagyr (1), alex55 (1), S.Kuskov (4).