|  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 | 
|  |