![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сортировать...? [D5, MSSQL]
UnMi © (2004-02-24 16:40:00)Здравствуйте всем!
Вот столкнулся с проблемой, при подстановке в поля DataSeta своих значений (OnGetText) не получается их потом по этим
значениям отсортировать. То есть сортироваться то сортируется, но не правильно - по первоначальным значениям. Может кто сталкивался?
Sandman25+1 (2004-02-25 16:48:00) [1][11] UnMi (25.02.04 16:37)
Да, ИМХО функция была наилучшим решением помимо полной переделки.
UnMi (2004-02-25 16:37:00) [2]>Sandman25+1 (25.02.04 10:55) [10]
Да, все это понятно. Спасибо огромное! НО!
У меня (вот ведь извращенца воспитали) типа так:
CREATE TABLE s(id INT, name CHAR(10))
CREATE TABLE f(id INT, name CHAR(10))
и данные: s([1,'1,13,15,35'],...)
f([1,'q'],[13,w],...)
причем f - тоже составная (из 2 состоит)
В итоге!
получаем гибрид s и f - temptable(1,'q,w....').
Вот так...
Сделал таки. И тоже извращенно.
Написал функцию на сервер, которая из представления отбирает то что мне надо, и клепает строку со значениями. Вот гемор!
Sandman25+1 (2004-02-25 10:55:00) [3][9] UnMi (25.02.04 09:23)
То есть у Вас есть что-то типа
CREATE TABLE t(id INT, name CHAR(10), keys CHAR(100)), и данные типа
например, t(1, 'первый','1,14,125,245')?
А следует сделать вот так:
CREATE TABLE t(id INT, name CHAR(10));
CREATE TABLE keys(id INT, key INT)
И данные:
t(1, 'Первый'),
keys(1,1),
keys(1,14),
keys(1,125),
keys(1,245).
Тогда и посик будет быстрее работать, и с сортировкой проблем не будет.
UnMi (2004-02-25 09:23:00) [4]>Sandman25+1 (24.02.04 17:30) [7]
Там есть ссылки на номера. Но дело в том, что номеров несколько!
И таблица должным образом нормализована. В том то и дело! Есть строка, куда записываются несколько номеров - ссылок на записи в другой таблице. Записываются по порядку. И сортируются данные по этому столбцу не на основании подставляемых значений, а на основе реальных значений.
>Vlad © (24.02.04 17:47) [8]
Я конечно попробую, но если честно, то с ADO TClientDataSet не рекомендуют.
Vlad (2004-02-24 17:47:00) [5]
> UnMi (24.02.04 17:28) [6]
возможно TClientDataSet тебе поможет
Sandman25+1 (2004-02-24 17:30:00) [6][6] UnMi (24.02.04 17:28)
А, понятно. Вместо того, чтобы добавить таблицу ссылок на номера, все засунули в одно поле? Про нормализацию слышали?
UnMi (2004-02-24 17:28:00) [7][5] Sandman25+1
Там в принципе не получится case использовать.
Есть строка, которая содержит номера (номеров может быть несколько).Так вот потом, в программе, номера заменяются определенными значениями. И надо как раз сортировать по ним.
Sandman25+1 (2004-02-24 17:22:00) [8][4] UnMi (24.02.04 17:10)
Какого вида подстановка нужна? В MSSQL довольно мощный CASE
UnMi (2004-02-24 17:10:00) [9]>Sandman25+1
Не, case точно не подходит, там ведь просто подстановка выражений на основе значений.
>Anatoly Podgoretsky :
А как быть?
Мне еще посоветовали воспользоваться какой нить табличкой (на основе TTable) и создать индекс по новому полю. И по нему сортировать. Может и получится. Попробую - напишу.
Sandman25+1 (2004-02-24 16:50:00) [10]Можно попробовать добавить CASE в SELECT и по этому новому полю сортировать.
Johnmen (2004-02-24 16:48:00) [11]А как вообще можно сортировать по несуществующим значениям ???
Как ты по ним сортируешь ???
Anatoly Podgoretsky (2004-02-24 16:48:00) [12]А так и должно быть, нельзя сортироваться по несуществующему.