Помогите разобраться... может свежим взглядом все покажеться простым ...
PHP код:
QueryRun query;
;
// Выбираю проводки журнала проводок
// Создаю QueryRun на базе готового представления
query = new QueryRun(querystr(InventJournalTrans));
// подвязываю таблицу InventTrans
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(InventTrans)).joinMode(JOINMODE::InnerJoin);
query.query().dataSourceTable(tableNum(InventTrans)).addLink(fieldNum(InventJournalTrans, InventTransId), fieldNum(InventTrans, InventTransId));
// Ставлю фильтр по коду журнала MyJournalId
query.query().dataSourceTable(tableNum(InventJournalTrans)).rangeField(fieldNum(InventJournalTrans, JournalId)).value(queryValue(MyJournalId));
// Возможно это лишнее
query.query().dataSourceTable(tableNum(InventTrans)).rangeField(fieldNum(InventTrans, StatusIssue)).value(queryValue(enum2str(statusIssue::None)));
query.query().dataSourceTable(tableNum(InventTrans)).addRange(fieldNum(InventTrans, StatusReceipt)).value(queryValue(enum2str(statusReceipt::Purchased)));
// Прилинковываю третью таблицу, с помощью полей TranstableId и TransRecId
query.query().dataSourceTable(tableNum(InventJournalTrans)).addDataSource(tableNum(MyTable)).joinMode(JOINMODE::InnerJoin);
query.query().dataSourceTable(tableNum(MyTable)).addLink(fieldNum(InventJournalTrans, TableId), fieldNum(MyTable , TransTableId));
query.query().dataSourceTable(tableNum(MyTable )).addLink(fieldNum(InventJournalTrans, RecId), fieldNum(MyTable, TransRecId));
// Ставлю фильтр по двум полям этой таблицы
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTable,MyTransRecId)).value(queryValue(MyValue1));
query.query().dataSourceTable(tableNum(MyTable)).addRange(fieldNum(MyTable, Selected)).value(queryValue(NoYes::Yes))
return query;
В результате хотелось иметь записи InventJournalTrans отфильтрованные по номеру журнала и двум полям третьей таблицы. В сикуэл это выглядит довольно просто:
PHP код:
SELECT INVENTJOURNALTRANS.JOURNALID, INVENTJOURNALTRANS.RECID, MYTABLE.SELECTED, INVENTTRANS.QTY, INVENTTRANS.ITEMID
FROM INVENTTRANS
INNER JOIN INVENTJOURNALTRANS ON INVENTTRANS.DATAAREAID = INVENTJOURNALTRANS.DATAAREAID AND
INVENTTRANS.INVENTTRANSID = INVENTJOURNALTRANS.INVENTTRANSID
INNER JOIN MYTABLE ON INVENTTRANS.DATAAREAID = MYTABLE .DATAAREAID AND
INVENTJOURNALTRANS.RECID = MYTABLE .TRANSRECID
WHERE (INVENTJOURNALTRANS.JOURNALID = 'IV03000034') AND
(INVENTTRANS.STATUSISSUE = 0) AND
(INVENTTRANS.STATUSRECEIPT = 1) AND
(MYTABLE .SELECTED = 1) AND
(MYTABLE .MYTRANSRECID = MyValue1)
но у меня вываливаются все сочетания... где я неправ ???