ОК У меня особенно неприятная проблема с порядком в профсоюзах, поэтому любая помощь будет признательна.
Сценарий таков:
Таблица членов со следующими записями (фактические данные):
REI882
YUI987
POBO37
NUBS26
BTBU12
MZBY10
TYBW54
(Они перечислены в том порядке, в котором я хочу вернуть их из моего запроса.)
Существует ряд бизнес-правил, касающихся создания этих MemberID, которые, я считаю, не имеют отношения к этому типу. Они исторические и каменные. Я застрял с ними. Они указывают на трудовой стаж члена.
Упорядочение производится по последним 4 символам в ID по возрастанию. Первые два символа идентификатора совершенно бессмысленны для сортировки.
Таким образом, самая верхняя возможная запись - A001 (самая старшая), а самая низкая возможная запись - ZZ99 (младший старший).
Когда я запрашиваю свою таблицу участников, список, который я получаю, должен отображать самое старшее сверху ... Очевидно, что стандартная сортировка не работает. Это то, что я должен на сегодняшний день:
Первый из этих запросов касается членов сортировки, чей идентификатор содержит только 1 начальную букву. Второй касается тех, у кого 2 начальные буквы.
SELECT * FROM (
SELECT Member.ID
FROM Member
WHERE (((IsNumeric(Mid([Member.ID],4,1)))=-1)) **check the 4th character is a digit
ORDER BY (Mid([Member.ID],3,1)), (Mid([Member.ID],4,1)), (Mid([Member.ID],5,1)), (Mid([Member.ID],6,1))
) t1
UNION
SELECT * FROM (
SELECT Member.ID
FROM Member
WHERE (((IsNumeric(Mid([Member.ID],4,1)))=0)) **check the 4th character is a letter
ORDER BY (Mid([Member.ID],3,1)), (Mid([Member.ID],4,1)), (Mid([Member.ID],5,1)), (Mid([Member.ID],6,1))
) t2
Но я получаю СУМАСШЕДШИЕ результаты с профсоюзом! Если я запускаю каждый из селекторов по отдельности - нет проблем, моя фанковая сортировка (в большой степени зависящая от некоторых неприятных манипуляций со строками в доступе!) Работает именно так, как я хочу.
Я понимаю, что это довольно сложно, но я надеюсь, что я объяснил это ясно, и что кто-то хочет почтить его за это !!!
edit: результат моего запроса выглядит случайным:
YUI987
MZBY10
NUBS26
BTBU12
REI882
POBO37
TYBW54