Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка записей в таблице  [new]
_aagn
Member

Откуда: Россия
Сообщений: 7
Привет!
Есть две связанные таблицы. В первой таблице - названия объектов, во второй таблице характеристики объектов.
Необходимо отсортировать названия объектов по их характеристикам из второй таблицы, по не важно какому столбцу. Помогите пожалуйста.
15 дек 11, 23:12    [11775228]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
_aagn
Необходимо отсортировать названия объектов по их характеристикам из второй таблицы, по не важно какому столбцу

И что мешает использовать в запросе фразу ORDER BY ?
15 дек 11, 23:13    [11775231]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
_aagn
Member

Откуда: Россия
Сообщений: 7
А конкретней можно если не сложно
15 дек 11, 23:16    [11775238]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
В смысле ?
В вашем запросе пишите нужный вам ORDER BY
15 дек 11, 23:17    [11775242]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
_aagn
Member

Откуда: Россия
Сообщений: 7
Хм.. к примеру в таблице 2 есть столбец Параметр1.
SELECT *
FROM TABLE1
ORDER BY TABLE2.PARAMETR1

и оно автоматически отсортирует значения в TABLE1?
15 дек 11, 23:20    [11775252]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104751
_aagn
и оно автоматически отсортирует значения в TABLE1?

Не в таблице, но в запросе
И для обращения к полю таблицы нужно как минимуть добавить эту таблицу в запрос
15 дек 11, 23:24    [11775257]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
_aagn
Member

Откуда: Россия
Сообщений: 7
Спасибо. Разобрался.
15 дек 11, 23:26    [11775264]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
CvetikZ
Member

Откуда:
Сообщений: 20
Продлжение темы:
В таблице есть два поля - N_Pasp(nvarchar(10)) и Mark(nvarchar(10)).
Поля содержат данные как в виде цифр, так и помесь цифр и букв.
Для вывода в таблицу и удобства проверки хотелось бы чтобы сортировка числовых данных производилась как чисел (1,2,3,...10) а не как строковых (1,10,11,2,...)

Хотела использовать конструкцию
... Order by case when isnumeric(N_Pasp)=1 then cast(N_Pasp as int) else N_Pasp end,
case when isnumeric(Mark)=1 then cast(Mark as int) else Mark end

но в случае помеси цифр и букв выходит ошибка " не могу конвертировать значение '1234-2011' в int"
18 дек 11, 13:00    [11784420]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
abrashka
Member

Откуда:
Сообщений: 521
CvetikZ,

Если правильно понял, то может можно удалить из поля все буквы(точнее оставить только цифры), ну и отсортировать их соответственно как числа?

Как оставить только цифры обсуждалось тут.
18 дек 11, 13:31    [11784490]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
CvetikZ
case when isnumeric(Mark)=1 then cast(Mark as int) else Mark end

но в случае помеси цифр и букв выходит ошибка " не могу конвертировать значение '1234-2011' в int"
Результат case, разумеется, не может быть разного типа для каждой строки.

CvetikZ
Для вывода в таблицу и удобства проверки хотелось бы чтобы сортировка числовых данных производилась как чисел
Проще всего для сортировки дополнять строку чем нибуть до максимальной длинны.
order by right('0000000000' + N_Pasp, 10), right('0000000000' + Mark, 10)
18 дек 11, 14:03    [11784575]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
abrashka
CvetikZ,

Если правильно понял, то может можно удалить из поля все буквы(точнее оставить только цифры), ну и отсортировать их соответственно как числа?

Как оставить только цифры обсуждалось тут.
WITH T(S)AS
(
           SELECT '345dshg8976'
 UNION ALL SELECT '-- df5hcre98765'
 UNION ALL SELECT '-=090jktgf654hgvfyut45'
)
SELECT *,
 OrderByValue=REPLACE
 (
  STR
  (
   (
    SELECT SUBSTRING(T.S,V.number,1)
    FROM master.dbo.spt_values V
    WHERE V.type='P' AND V.number BETWEEN 1 AND LEN(T.S) AND SUBSTRING(T.S,V.number,1) LIKE '[0-9]'
    ORDER BY V.number
    FOR XML PATH('')
   ), MAX(LEN(T.S))OVER()
  ),' ','0'
 )
FROM T
ORDER BY OrderByValue;WITH T(S)AS
(
           SELECT '345dshg8976'
 UNION ALL SELECT '-- df5hcre98765'
 UNION ALL SELECT '-=090jktgf654hgvfyut45'
)
SELECT *,
 OrderByValue=REPLACE
 (
  STR
  (
   (
    SELECT SUBSTRING(T.S,V.number,1)
    FROM master.dbo.spt_values V
    WHERE V.type='P' AND V.number BETWEEN 1 AND LEN(T.S) AND SUBSTRING(T.S,V.number,1) LIKE '[0-9]'
    ORDER BY V.number
    FOR XML PATH('')
   ), MAX(LEN(T.S))OVER()
  ),' ','0'
 )
FROM T
ORDER BY OrderByValue;
Вместо master.dbo.spt_values лучше использовать свою таблицу последовательных чисел.
18 дек 11, 14:48    [11784662]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка записей в таблице  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Извините, что-то лишний кусок опубликовался...
iap
abrashka
CvetikZ,

Если правильно понял, то может можно удалить из поля все буквы(точнее оставить только цифры), ну и отсортировать их соответственно как числа?

Как оставить только цифры обсуждалось тут.
WITH T(S)AS
(
           SELECT '345dshg8976'
 UNION ALL SELECT '-- df5hcre98765'
 UNION ALL SELECT '-=090jktgf654hgvfyut45'
)
SELECT *,
 OrderByValue=REPLACE
 (
  STR
  (
   (
    SELECT SUBSTRING(T.S,V.number,1)
    FROM master.dbo.spt_values V
    WHERE V.type='P' AND V.number BETWEEN 1 AND LEN(T.S) AND SUBSTRING(T.S,V.number,1) LIKE '[0-9]'
    ORDER BY V.number
    FOR XML PATH('')
   ), MAX(LEN(T.S))OVER()
  ),' ','0'
 )
FROM T
ORDER BY OrderByValue;
Вместо master.dbo.spt_values лучше использовать свою таблицу последовательных чисел.
18 дек 11, 14:51    [11784667]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить