|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Добрый день, коллеги! Имеется таблица ID - ключевое поле (счетчик) GroupName - nvarchar(100) В поле GroupName, как следует из названия, содержится номер группы. Все бы ничего, но номер группы может быть не только 1,2,3 и т.д., но и 2/1, 2/В ... Была организована табличная функция, которая возвращает сортированный список групп Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Задача стоит получить последний номер группы (в текущей базе есть номера от 1 до 50) Запрос типа такого, возвращает упорно 9 Код: sql 1.
Подскажите, пожалуйста, как выкрутиться в этой ситуации. Сервер 2008 R2 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:01 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Научите вашего архитектора БД разделять в таких случаях одно поле с составным номером на несколько, чтобы можно было писать по-человечески order by. Функция шедеврально бесполезна. Но если уж очень хочется, то ваша функция как раз должна распиливать ваш GroupName на несколько полей, чтобы потом после вызова функции можно было сделать сортировку. Ну или как-то так, если ваше длинное непонятное выражение про задание правльного порядка: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 18:06 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
edward_sh, создайте таблицу сортировки, по ней и сортируйте. Таблицу можно заранее заполнять или по ходу появления новых значений. Заполните с шагом в 1000, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 21:05 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
К тому же TOP(100) PERCENT ... ORDER BY ... сервер игнорирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 21:44 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Select top (select 100) percent ... order by не игнорирует. Во всяком случае - пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2020, 21:48 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич ваша функция как раз должна распиливать ваш GroupName на несколько полей Версия сервер какая? В современным скулях есть замечательная функция SPLIT_STRING (насколько помню её название). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 07:31 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
SQL2008 Гавриленко Сергей Алексеевич ваша функция как раз должна распиливать ваш GroupName на несколько полей Версия сервер какая? В современным скулях есть замечательная функция SPLIT_STRING (насколько помню её название). edward_sh Сервер 2008 R2 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 11:33 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Добрый день, джентельмены! По совету бывалых товарищей разбил поле номер группы на числовое значение и строковый довесок. Теперь всплыла другая проблема, с ходу которую я не понял как решить. Прошу помощи зала. Теперь мы имеем @Name int @NameExt nvarchar(10) @Year int @PayType int Мне надо проверить, существует ли группа с таким номером (Name+NameExt) в году (Year) с типом (PayType) Ранее все было боле-менее понятно, подставляем в поле запроса переменную с именем группы - получаем результат. При разведения поля имени группы на составляющие части как правильно подменить условие отбора в поле where для NameExt, учитывая, что там может быть как текст, так и значение NULL? Группа с дополнительным номером в виде текста есть, есть такая же группа, но с полем NULL. Т.е. группа 28 NULL и группа 28 /1 Попробовал лепить строку динамического SQL, но она не прокатывает с IF EXIST - ругается ошибкой. Ранее было Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2020, 13:30 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
edward_sh, попробуйте так: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 13:42 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Уважаемые доны и джентельмены! Приведя таблицу "по фэншую" столкнулся со значительным увеличением геморроя для выборки записей. Кол-во кода увеличилось значительно, по сравнению с первоначальным вариантом. Решил вернуться к текстовому полю, где и имя группы и ее расширение (возможное) будут в одном поле. Так что не всегда "фэншуй" полезен... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 16:00 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
edward_sh Уважаемые доны и джентельмены! Приведя таблицу "по фэншую" столкнулся со значительным увеличением геморроя для выборки записей. Кол-во кода увеличилось значительно, по сравнению с первоначальным вариантом. Решил вернуться к текстовому полю, где и имя группы и ее расширение (возможное) будут в одном поле. Так что не всегда "фэншуй" полезен... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 16:40 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
Один знакомый держит календарь выходных в виде '01' в текстовом поле и ничего, как-то работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 19:19 |
|
Выбрать последнюю запись
|
|||
---|---|---|---|
#18+
edward_sh Кол-во кода увеличилось значительно, по сравнению с первоначальным вариантом. Так что не всегда "фэншуй" полезен... Если в ваши должностные обязанности не входит написание кода, то можно и так обойтись. Если же входит - то это и не этично и не практично запоминать и реализовывать заведомо проблемный патерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2020, 21:33 |
|
|
start [/forum/topic.php?fid=46&msg=39993564&tid=1685697]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 281ms |
total: | 424ms |
0 / 0 |