|
![]() |
#1 |
Модератор
|
public void executeQuery()
{ querybuilddatasource dca; querybuildrange brca; querybuilddatasource dpa; querybuildrange brpa; ; q = new query(); ds = q.addDataSource(tablenum(Implementations)); if (filter.ClientActivityId()) { dca = ds.addDataSource(tablenum(Firm2Activities)); dca.addlink(fieldnum(Implementations, ClientId), fieldnum(Firm2Activities, FirmId)); dca.joinMode(JOINMODE::INNERJOIN); brca = dca.addRange(fieldnum(Firm2Activities, ActivityId)); brca.value(filter.ClientActivityId()); } if (filter.ProviderActivityId()) { dpa = ds.addDataSource(tablenum(Firm2Activities)); dpa.addlink(fieldnum(Implementations, ProviderId), fieldnum(Firm2Activities, FirmId)); dpa.joinMode(JOINMODE::INNERJOIN); brpa = dpa.addRange(fieldnum(Firm2Activities, ActivityId)); brpa.value(filter.ProviderActivityId()); } this.query(q); super(); } Что-то я к вечеру вообще перестаю что-либо понимать. Есть два фильтра - по ClientActivityId и ProviderActivityId. Вместе они выдают БОЛЬШЕ строк, чем по отдельности, что как-то не вяжется с традиционным пониманием inner join-ов. Сразу оговорюсь - на Firm2Activities уникальный ключ по (FirmId, ActivityId) Не могу понять (с) |
|