|  06.08.2008, 14:57 | #1 | 
| Участник | Отсеять дублирующиеся по определенному полю рекорд 
			
			Можно ли в один запрос сделать это? Смотрел в сторону notexist join в вайл селекте, но так пропадут и те рекорды, у которых есть дубликаты, а мне надо одобрать все уникальные значения, то есть из набора: 1 3 5 5 1 2 Результат должен получиться: 1352, в случае же с notexist join только 32. И вообще, жаль, что в Аксапте нет дистинкта, так что возможно прийдется выполнять из строки. 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  06.08.2008, 15:04 | #2 | 
| Участник | 
			
			Через джоин и группировку?
		 | 
|  | 
|  06.08.2008, 15:10 | #3 | 
| Axapta | X++: while select table group by field | 
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  06.08.2008, 15:12 | #4 | 
| Участник | 
			
			Без джойна. Просто группировка. Разумеется, если кроме этого поля больше ничего не надо. Хотя стандартное решение - это сортировка по указанному полю с сохранением значения предыдущей записи в переменной. X++: int prevValue = ( ); while select MyTable order by MyField { if (prevValue == MyTable.MyField) { // дубль. Беру следующую запись continue; } // Обновляю значение переменной prevValue == MyTable.MyField // собственно цикла ... } | 
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  06.08.2008, 15:13 | #5 | 
| Участник | 
			
			Не до конца понял условие задачи. Ответ удалил    Последний раз редактировалось kashperuk; 06.08.2008 в 15:17. | 
|  | |
| За это сообщение автора поблагодарили: HorrR (1). | |
|  06.08.2008, 15:17 | #6 | 
| Участник | Цитата: table1.RecId < table2.RecId Поскольку условие на не равно выбросит вообще любые записи имеющие дубли. Ни одной не останется. | 
|  | 
|  06.08.2008, 15:19 | #7 | 
| Участник | 
			
			Ого, как много успели наотвечать, вот за что и люблю сей светлый портал, спасибо всем большое. Я уже разорбрался, так как меня интересует только одно поле, сделал простую группировку, и очень рад, что вы, господа, предложили тот же способ, значит я не совсем безнадежен)))
		 
				__________________ Axapta has seduced me deadly!   | 
|  | 
|  06.08.2008, 15:20 | #8 | 
| Участник | 
			
			Да, через  X++: select from table1 notexistjoin table2 where table1.field1 == table2.field1 && table1.RecId < table2.RecId | 
|  | 
|  06.08.2008, 15:24 | #9 | 
| Участник | 
			
			Да, кстати, способ с поправкой Владимира Максимова очень изящен в случае, если надо потом иметь все данные. Так сказать, в мемориз)
		 
				__________________ Axapta has seduced me deadly!   Последний раз редактировалось HorrR; 06.08.2008 в 15:28. | 
|  | 
|  06.08.2008, 15:31 | #10 | 
| Axapta | 
			
			Да, но расскажи мне смысл такой выборки? Почему из повторяющихся записей мы выбираем ту, у которой reсId больше, а не меньше? Если все равно, какую выбирать, то какой в этом может быть смысл? Мы генератор случайных чисел пишем? Или имеется в виду, что значения остальных "важных" полей у таких записей совпадают? Но в этом случае структура БД неоптимальна. Или можно еще и по этим полям сгрупировать тоже.
		 | 
|  |