Вопрос № 46854: Как можно распечатать текст из RichTextBox'а?...Вопрос
№ 46915: Добрый день, уважаемые эксперты! В Access есть таблица с двумя полями: одно поле - код (например, 1, 2,
3 и т.п.), второе поле - число (например, 1234560, 1234561 и т.п.).
ID NUMBER
------------------------------
1 1234560
1 1234561<b...
Отвечает: AlexanderZh
Здравствуйте, Dushin Igor!
Например http://web.vrn.ru/freestyler/vb/vbasic/5.htm
--------- Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет...
Ответ отправил: AlexanderZh (статус:
8-ой класс)
Ответ отправлен: 20.06.2006, 21:52 Оценка за ответ: 5
Вопрос
№ 46.915
Добрый день, уважаемые эксперты! В Access есть таблица с двумя полями: одно поле - код (например, 1, 2, 3 и т.п.), второе
поле - число (например, 1234560, 1234561 и т.п.).
ID NUMBER
------------------------------
1 1234560
1 1234561
1 1234562
2 1234563
2 1234564
3 1234565
и т.п.
Необходимо проверять каждую запись и для чисел с одинаковым ID и обрезать последнюю цифру в поле NUMBER, чтобы "как
бы" сгруппировать" значения NUMBER по полю ID, но если встретится значение 123456* с другим кодом ID, его необходимо
оставить без изменений. Чтобы выбрать, какой ID - "главный" для значений NUMBER, необходимо считать записи, сколько
раз значение типа 123456* встречается с кодом ID и максимальное значение ID по такому шаблону брать за "главное".
Т.е. надо привести к такому вот виду:
Главность ID:
1 - 3 раза
2 - 2 раза
3 - 1 раз
ID=1 (главный)
ID NUMBER
------------------------------
1 123456
2 1234563
2 1234564
3 1234565
Вопрос: Как это реализовать на базе Access? Обычная группировка не помогает (так как значения-то разные) или я мало подумал
над этим. Наверное можно прямо в тексте запроса выбрать главный ID, затем построчно делать NUMBER DIV 10 в каждой строке
по сответствующему ID и перегонять в другую, выходную таблицу то, что получится. Но нет ли у кого идей, как этот процесс
оптимизировать, какой-нибудь алгоритм предложит может быть кто-нибудь? Спасибо огромное заранее...
Отправлен: 21.06.2006, 12:32
Вопрос задал: Danich (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Danich!
У меня не получилось сгруппировать по вычисляемым полям, поэтому использовал дополнительный запрос:
SELECT id, left ( name, iif ( id= ( SELECT TOP 1 b.Id FROM Tab1 AS b GROUP BY b.Id ORDER BY Count ( b.id ) DESC; ) ,6,7 )
) AS nname FROM Tab1;
Назвал SS
Результатом будет
id nname
1 123456
1 123456
1 123456
2 1234563
2 1234564
3 1234565
Ответ отправил: Филатов Евгений Геннадьевич
(статус: 3-ий класс)
Ответ отправлен: 21.06.2006, 19:08 Оценка за ответ: 5 Комментарий
оценки: Браво! Очень просто! Отсутствие должного опыта в Access (либо времени) не позволило мне так изящно решить
этот вопрос, выбрать главное направление через сортировку в запросе по убыванию и захват этого значения через TOP 1. Надо
будет запомнить, просто и очень эффективно... Огромное спасибо!!!