|
03.06.2015, 17:04 | #1 |
Участник
|
Помогите с запросом
Запрос
A join B on A.P=B.P join C on A.K=C.K через Relations в один запрос qbds = query.addDataSource(tablenum( A )); qbds.addRange(fieldnum( A, ItemId )); qbds = qbds.addDataSource(tablenum(B)); qbds.relations(true); qbds.fetchMode(QueryFetchMode::One2One); qbds = qbds.addDataSource(tablenum(C)); qbds.relations(true); qbds.fetchMode(QueryFetchMode::One2One); но С тогда Relation ищет уже с B ? а как задать, чтобы Relations были C с A ? |
|
03.06.2015, 17:07 | #2 |
Участник
|
используйте разные переменные qbds
|
|
03.06.2015, 18:17 | #3 |
Участник
|
Попробуйте так:
X++: qbdsA = query.addDataSource(tablenum(A)); qbdsA.addRange(fieldnum(A, ItemId)); qbds = qbdsA.addDataSource(tablenum(B)); qbds.relations(true); qbds.fetchMode(QueryFetchMode::One2One); qbds = qbds.addDataSource(tablenum(C)); qbds.addLink(fieldnum(A, K), fieldnum(C, K), qbdsA.name()) qbds.fetchMode(QueryFetchMode::One2One); Последний раз редактировалось Cardagant; 03.06.2015 в 18:19. |
|
03.06.2015, 22:30 | #4 |
Участник
|
Цитата:
а как задать, чтобы Relations были C с A ?
X++: qbdsA = query.addDataSource(tablenum( A )); qbdsA.addRange(fieldnum( A, ItemId )); qbds = qbdsA.addDataSource(tablenum(B)); qbds.relations(true); qbds.fetchMode(QueryFetchMode::One2One); qbds = qbdsA.addDataSource(tablenum(C)); qbds.relations(true); qbds.fetchMode(QueryFetchMode::One2One); |
|
03.06.2015, 23:57 | #5 |
Участник
|
Спасибо, Ivan,
Ваш вариант правда работает при X++: qbds.fetchMode(QueryFetchMode::One2One); Мой вариант сработает также и при отсутствии задания типа связи 1:1. Но вопрос был и правда о том, Цитата:
а как задать, чтобы Relations были C с A ?
|
|
04.06.2015, 08:21 | #6 |
Участник
|
Мне как раз и надо 1 ко многим связь. One2One можно убирать только в варианте Cardagant ?
|
|
04.06.2015, 08:45 | #7 |
Участник
|
Цитата:
Связывание источников данных в запросах |
|
|
За это сообщение автора поблагодарили: trudel (1). |
04.06.2015, 08:46 | #8 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Нет, не путайте. Свойство FetchMode не за это отвечает.
Связывание источников данных в запросах |
|
04.06.2015, 09:46 | #9 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Нет, не путайте. Свойство FetchMode не за это отвечает.
Связывание источников данных в запросах |
|
04.06.2015, 08:45 | #10 |
Участник
|
Вот согласно теории
FetchMode Это свойство присутствует только у вложенных источников данных. Иногда используется для управления способом связывания источников данных («один ко многим» или «один к одному»), но обычно достаточно использования свойства JoinMode. Я смотрю практически все FetchMode указывают в обязательном порядке. И практически везде One2One ... Но вроде зачастую связи 1 ко многим даже более частые. Например водитель A может ездить на нескольких машинах из С, это 1 ко многим, но One2One все равно срабатывает как 1 ко многим у меня. Точнее в результате Егоров Ауди Егоров Бмв Егоров Лада я вижу. Запутался с FetchMode, хотя неоднократно использовал) |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Помогите с запросом | 4 | |||
Помогите с запросом | 8 | |||
Помогите с запросом.. | 2 | |||
Помогите с SQL запросом | 8 | |||
Помогите пожалуйста с запросом... | 18 |
|