10.02.2006, 11:49 | #1 |
Участник
|
Соединние трех таблиц в 'трехуголник'
Мне нужно соединить три таблицы InventJournalTrans, InventDim, InventBatch.
К InventJournalTrans присоединяю InventDim, к InventDim присоединяю InventBatch. Но как присоединить к InventJournalTrans InventBatch через ItemId ? q = this.query(); qBD_InventJournalTrans = q.dataSourceTable(tablenum(InventJournalTrans)); qBD_InventDim = qBD_InventJournalTrans.addDataSource(tablenum(InventDim)); qBD_InventDim.joinMode(JoinMode::InnerJoin); qBD_InventDim.fetchMode (0); qBD_InventDim.addLink(fieldnum(InventJournalTrans,InventDimId),fieldnum(InventDim,InventDimId)); qBD_InventBatch = qBD_InventDim.addDataSource(tablenum(InventBatch)); qBD_InventBatch.joinMode(JoinMode::InnerJoin); qBD_InventBatch.fetchMode (0); qBD_InventBatch.addLink(fieldnum(InventDim,InventBatchId),fieldnum(InventBatch,InventBatchId)); |
|
10.02.2006, 12:04 | #2 |
Участник
|
это тебе надо через InventTable
|
|
10.02.2006, 12:09 | #3 |
NavAx
|
Можно так:
QueryBuildRange qbr_InventBatch; ; q = this.query(); qBD_InventJournalTrans = q.DataSourceTable(tablenum(InventJournalTrans) qBD_InventDim = qBD_InventJournalTrans.addDataSource(tablenum(InventDim)); qBD_InventDim.joinMode(JoinMode::InnerJoin); qBD_InventDim.fetchMode (0); qBD_InventDim.addLink(fieldnum(InventJournalTrans,InventDimId),fieldnum(InventDim,InventDimId)); qBD_InventBatch = qBD_InventDim.addDataSource(tablenum(InventBatch)); qBD_InventBatch.joinMode(JoinMode::InnerJoin); qBD_InventBatch.fetchMode (0); qBD_InventBatch.addLink(fieldnum(InventDim,InventBatchId),fieldnum(InventBatch,InventBatchId)); qbr_InventBatch = qBD_InventBatch.addRange(fieldNum(InventBatch, itemId)); qbr_InventBatch.value(strfmt("(%1) = %2.%3", fieldstr(InventBatch, itemId), qBD_InventJournalTrans.name(), fieldstr(InventJournalTrans, itemId)) ); |
|
10.02.2006, 12:24 | #4 |
NavAx
|
Да, кстати, скорее всего вместо qBD_InventBatch.fetchMode (0); (один - ко многим)
нужно будет поставить qBD_InventBatch.fetchMode (1); (один - к одному). |
|
10.02.2006, 12:51 | #5 |
Участник
|
Цитата:
Сообщение от Roman777
qbr_InventBatch.value(strfmt("(%1) = %2.%3", fieldstr(InventBatch, itemId), qBD_InventJournalTrans.name(), fieldstr(InventJournalTrans, itemId)) );
qbr_InventBatch.value(strfmt('%1.%2 = %3.%4', qbr_InventBatch.name(), fieldstr(InventBatch, itemId), qBD_InventJournalTrans.name(), fieldstr(InventJournalTrans, itemId))) |
|
10.02.2006, 13:31 | #6 |
Moderator
|
Цитата:
Сообщение от Roman777
Да, кстати, скорее всего вместо qBD_InventBatch.fetchMode (0); (один - ко многим)
нужно будет поставить qBD_InventBatch.fetchMode (1); (один - к одному).
__________________
Андрей. |
|
10.02.2006, 13:48 | #7 |
NavAx
|
Цитата:
Сообщение от Dron AKA andy
Ошибочка, 0 это как раз "Один к одному" (см. enum QueryFetchMode), его и нужно оставить.
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Пустые названия системных таблиц в report data range (DAX 4.0) | 3 | |||
Владельцы таблиц в БД аксапты | 11 | |||
Query из 7 таблиц | 29 | |||
Join трех таблиц (две к одной) | 25 | |||
outer join для трех таблиц | 4 |
|