Показать сообщение отдельно
Старый 08.08.2008, 17:34   #13  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Не уверен, что это верно, но вроде можно обойтись одним датасорсом CustTable, в init которого
X++:
public void init()
{
   QueryBuildDataSource qb;

    super();

    qb =  CustTable_ds.query().dataSourceName('CustTable');

    qb.clearLinks();
    qb.fetchMode(QueryFetchMode::One2One);

    qb.addLink(fieldNum(CustInvoiceJour,InvoiceAccount),fieldNum(CustTable,AccountNum));
    qb.addLink(fieldNum(CustInvoiceJour,OrderAccount ),fieldNum(CustTable,AccountNum));

    qb.addSelectionField(fieldNum(CustTable,RecId));
    qb.addSelectionField(fieldNum(CustTable,Name));
}
При этом полученный запрос выглядит следующим образом:
Цитата:
Информация:
SELECT RecId, SalesId
FROM CustInvoiceJour
WHERE ((InvoiceDate>={ts '2008-08-08 00:00:00.000'} AND InvoiceDate<={ts '2008-08-08 00:00:00.000'}))
JOIN RecId FROM CustTable
WHERE
CustInvoiceJour.InvoiceAccount = CustTable.AccountNum AND
CustInvoiceJour.OrderAccount = CustTable.AccountNum
Вопрос в том равносильно ли это предыдущему запросу (в плане джойнов)
Цитата:
SELECT * FROM CustInvoiceJour WHERE ((InvoiceDate>={ts '2008-05-01 00:00:00.000'} AND InvoiceDate<={ts '2008-05-31 00:00:00.000'}))
JOIN * FROM CustTable WHERE CustInvoiceJour.OrderAccount = CustTable.AccountNum
JOIN * FROM CustTable WHERE CustInvoiceJour.InvoiceAccount = CustTable.AccountNum
upd
судя по данным - равносильно и можно обойтись без addSelectionField, выбирая сразу все поля.

Последний раз редактировалось Eldar9x; 08.08.2008 в 17:57.