|
|
#1 |
|
Участник
|
Доброе время суток!
Задача: выбрать строки из одной таблици и кол-во строк соответстующие в другой таблице. Объясните почему не я вижу данные одной таблицы, а данные второй таблица с суммой строк нет. Что не так делаю? X++: query = new Query(); queryBuildDataSource = query.addDataSource(tableNum(PurchTable)); queryBuildDataSource.addSortField(fieldNum(PurchTable, PurchId)); queryBuildDataSource.addSortField(fieldNum(PurchTable, OrderAccount)); queryBuildDataSource.addSortField(fieldNum(PurchTable, DeliveryDate)); queryBuildDataSource.addRange(fieldnum(PurchTable,OrderAccount)).value(stVendAccount.valueStr());// поставщик queryBuildDataSource.addRange(fieldnum(PurchTable,PurchStatus)).value(queryvalue(PurchStatus::Backorder)); // Статус закупки открыто queryBuildDataSource.addRange(fieldnum(PurchTable,DeliveryDate)).value(queryRange(Str2Date(DateStart.valueStr(),123),Str2Date(DateEnd.valueStr(),123))); // Статус закупки открыто queryBuildDataSource2 = queryBuildDataSource.addDataSource(tableNum(PurchLine)); //queryBuildDataSource2.relations(true); queryBuildDataSource2.addLink(fieldNum(PurchLine, PurchId),fieldNum(PurchTable, PurchId)); queryBuildDataSource2.addSelectionField(fieldNum(PurchLine, LIneNum), SelectionField::Count); queryBuildDataSource2.orderMode(OrderMode::GroupBy); queryBuildDataSource2.addRange(fieldnum(PurchLine,ItemId)).value(stItemId.valueStr()); // номенкалатура queryBuildDataSource2.addRange(fieldnum(PurchLine,PurchStatus)).value(queryvalue(PurchStatus::Backorder)); //статус queryBuildDataSource2.addSortField(fieldNum(PurchLine, ItemId)); queryBuildDataSource2.addSortField(fieldNum(PurchLine, PurchStatus)); queryBuildDataSource2.joinMode(JoinMode::ExistsJoin); queryRun = new QueryRun(query); ItogTable_BRR.selectForUpdate(true); delete_from ItogTable_BRR; while(queryRun.next()) { _PurchTable = queryRun.get(tableNum(PurchTable)); //_PurchLine = queryRun.get(tableNum(PurchLine)); _PurchLine = queryRun.getNo(2); } |
|
|
|
|
#3 |
|
Участник
|
да я вижу что не отрабатывает ... а как сделать чтоб отрабатывало? ... хочу всё сделать единым запросом... не разбивая ...
|
|
|
|
|
#4 |
|
Участник
|
я его убирал толку нет ...
|
|
|
|
|
#5 |
|
MCITP
|
ну как минимум отказаться от exists джоина. он вам по смыслу не нужен...
![]() Делаете иннер джоин и групперуете всё как вам надо. (и не надо пытаться сделать одну таблицу ордер бай, а вторую груп бай, как вы похоже это хотите сделать в примере )А то что вы написали, с точки зрения SQL - какой-то полный нонсенс...
__________________
Zhirenkov Vitaly |
|
|
|
|
#6 |
|
Участник
|
да я тут и так и так крутил вертел ... уже всё перепробовал .. не даёт данные второй таблици и всё тут..
|
|
|
|
|
#7 |
|
Участник
|
оппа....кажись получаеться .... продолжаю :-) ..... Спасибо всем!
|
|
|
|
|
#8 |
|
Участник
|
аннн нет ...убираю групировку данные выходят по второй таблице...а как получить сумму строк?
|
|
|
|
|
#9 |
|
MCITP
|
Цитата:
убираю групировку данные выходят по второй таблице
Куда они выходят, как выходят, зачем? )Посмотри вот этот код, я там чуток поправил на вскидку, может поможет: Код: static void Job1(Args _args)
{
Query query;
PurchTable _purchTable;
PurchLine _purchLine;
QueryRun queryRun;
queryBuildDataSource queryBuildDataSource, queryBuildDataSource2;
;
query = new Query();
queryBuildDataSource = query.addDataSource(tableNum(PurchTable));
queryBuildDataSource.orderMode(OrderMode::GroupBy);
queryBuildDataSource.addSortField(fieldNum(PurchTable, PurchId));
queryBuildDataSource.addSortField(fieldNum(PurchTable, OrderAccount));
queryBuildDataSource.addSortField(fieldNum(PurchTable, DeliveryDate));
queryBuildDataSource.addRange(fieldnum(PurchTable,OrderAccount)).value(queryvalue("Дровосек"));// поставщик
queryBuildDataSource.addRange(fieldnum(PurchTable,PurchStatus)).value(queryvalue(PurchStatus::Backorder)); // Статус закупки открыто
queryBuildDataSource.addRange(fieldnum(PurchTable,DeliveryDate)).value(queryvalue(14\12\2002)); // Статус закупки открыто
queryBuildDataSource2 = queryBuildDataSource.addDataSource(tableNum(PurchLine));
//queryBuildDataSource2.relations(true);
queryBuildDataSource2.addLink(fieldNum(PurchLine, PurchId),fieldNum(PurchTable, PurchId));
queryBuildDataSource2.addSelectionField(fieldNum(PurchLine, LIneNum), SelectionField::Count);
// queryBuildDataSource2.orderMode(OrderMode::GroupBy);
queryBuildDataSource2.addRange(fieldnum(PurchLine,ItemId)).value(queryvalue("Плита ДСП 1,0х0,6")); // номенкалатура
queryBuildDataSource2.addRange(fieldnum(PurchLine,PurchStatus)).value(queryvalue(PurchStatus::Backorder)); //статус
queryBuildDataSource2.addSortField(fieldNum(PurchLine, ItemId));
queryBuildDataSource2.addSortField(fieldNum(PurchLine, PurchStatus));
queryBuildDataSource2.joinMode(JoinMode::InnerJoin);
info (queryBuildDataSource.toString());
info (queryBuildDataSource2.toString());
queryRun = new QueryRun(query);
while(queryRun.next())
{
_PurchTable = queryRun.get(tableNum(PurchTable));
//_PurchLine = queryRun.get(tableNum(PurchLine));
_PurchLine = queryRun.getNo(2);
}
}
__________________
Zhirenkov Vitaly |
|
|
|
| За это сообщение автора поблагодарили: mazzy (2). | |
|
|
#10 |
|
Участник
|
Огромное спасибо! Разобрался... Незнаю что без вас делал бы :-)
|
|
|