26.12.2002, 12:51 | #1 |
Administrator
|
Вопрос знатокам QBE и Query в AXAPTA
Снова я со своими Query'ями.
В общем, проблема такая. Есть у меня три таблицы: A, B и C. Таблицы B и C содержат данные для фильтрации A. Например, в таблице A есть два поля: fB и fC. Нужно создать запрос, который бы выбирал из A записи, у которых значение fB содержится в B, а значение fC - в С. Как бы мне это реализовать с помощью Query? Что куда внедрять? Я делаю A I---B (B.fA = A.fB) I---C (C.fA = A.fC) но тогда выполняется OR, то есть выбираются все записи A, удовлетворяющие хотя бы одному фильтру. А мне надо именно AND. Что-то мне кажется, что это не очень сложно, а у меня просто уже предновогодний ступор наступил. Помогите, а?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
26.12.2002, 14:29 | #2 |
Участник
|
Может быть я тоже чего-то не знаю...
Мне не удалось сделать такую выборку. (долго пытался) Пришел к выводу: Query в Аксапте можно построить только ЛИНЕЙНЫЕ. т.е. (из предыдущего примера) B I---A (B.fA = A.fB) ......I---C (C.fA = A.fC) (точки - для выравнивания) |
|
26.12.2002, 14:41 | #3 |
SAP
|
Привет,
Цитата:
Изначально опубликовано ta_and
Query в Аксапте можно построить только ЛИНЕЙНЫЕ. Цитата:
Изначально опубликовано Maxim Gorbunov
Что-то мне кажется, что это не очень сложно, а у меня просто уже предновогодний ступор наступил. При запуске запроса по таблице А пользователь устанавливает критерии по полям В и С через списки из соответствующих таблиц (т.е. именно, то что необходимо). С уважением. |
|
26.12.2002, 17:02 | #4 |
Участник
|
Re: Вопрос знатокам QBE и Query в AXAPTA
Цитата:
Изначально опубликовано Maxim Gorbunov
Снова я со своими Query'ями. Я делаю A I---B (B.fA = A.fB) I---C (C.fA = A.fC) но тогда выполняется OR, то есть выбираются все записи A, удовлетворяющие хотя бы одному фильтру. А мне надо именно AND. Что-то мне кажется, что это не очень сложно, а у меня просто уже предновогодний ступор наступил. Помогите, а? И в том и в другом случае, надо у внедренных источников данных установить fetchMode == "1:1", ну и, естетественно, указать связи между источниками данных. С уважением, программист группы компаний "Счастливый Кроха". |
|
27.12.2002, 11:43 | #5 |
Administrator
|
Цитата:
Изначально опубликовано Pavel
По самой задачке встречный вопрос: «А почему просто нельзя составить запрос по таблице A, выбрав в качестве критериев поля B и C?» При запуске запроса по таблице А пользователь устанавливает критерии по полям В и С через списки из соответствующих таблиц (т.е. именно, то что необходимо). Цитата:
Изначально опубликовано rumpleteazer
У меня получилось сделать требуемое из кода и, создав вручную запрос в AOT. Цитата:
Изначально опубликовано rumpleteazer
абревиатура QBE - осталась для меня загадкой(кстати, а что это такое? )
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
27.12.2002, 13:00 | #6 |
Участник
|
Цитата:
Изначально опубликовано Maxim Gorbunov
Поподробнее, пожалуйста. Как вы это делали? Из вашего сообщения совершенно не понятно, "где собака порылась". fetchMode 1:1 решил все проблемы? Сейчас попробую, конечно, но... хм, очень сомневаюсь. X++: void test() { Test1 t1; Test2 t2; Test3 t3; QueryRun qr; Query q = new Query(); QueryBuildDataSource qbd; QueryBuildDataSource qbd1; qbd = q.addDataSource(tablenum(Test1)); qbd1 = qbd.addDataSource(tablenum(Test2)); qbd1.addLink(fieldnum(Test1,ID),fieldnum(Test2,ID)); qbd1.joinMode(JoinMode::EXISTSJOIN); qbd1.fetchMode(0); qbd1 = qbd.addDataSource(tablenum(Test3)); qbd1.addLink(fieldnum(Test1,ID),fieldnum(Test3,ID)); qbd1.joinMode(JoinMode::EXISTSJOIN); qbd1.fetchMode(0); qr =new QueryRun(q); while(qr.next()) { t1 = qr.getNo(1); t2 = qr.getNo(2); t3 = qr.getNo(3); print t1.ID," , ",t1.B," | ", t2.ID," , ",t2.B," | ", t3.ID," , ",t3.B; } } Стурутура таблиц и данные Test1(ID, B) 1 a 2 b 3 c 4 d Test2(ID,B) 1 c 1 d 2 e 3 g 5 f Test3(ID, B) 2 a 2 b 3 b Результат: 2 , b | 0 , | 0 , 3 , c | 0 , | 0 , Имхо, то что нужно С уважением, программист группы компаний "Счастливый Кроха". |
|
27.12.2002, 13:19 | #7 |
Administrator
|
По моему тоже. Большое спасибо.
Осталось теперь только разобраться, что же это за спасительный fetchMode (попробовал его менять - действительно работает не так).
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|