Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];

Вниз

SQL order by   Найти похожие ветки 

 
armstrong   (2011-08-31 23:34) [0]

подскажите пожалуйста, ADO, при упорядочивании (ASC) имею список:
АБВ
А-А

почему А-А стоит ниже?
ведь код - (2D) менее Б

и как сделать что бы было
А-А
АБВ  ?


 
Ega23 ©   (2011-09-01 01:10) [1]

дай обе строки в Hex-значениях


 
Юрий Зотов ©   (2011-09-01 01:17) [2]

desc?
:o)


 
armstrong   (2011-09-01 01:32) [3]

С0 С1 С2
С0 2В С0


 
Inovet ©   (2011-09-01 05:47) [4]

Может collation какой левый указан?


 
Ega23 ©   (2011-09-01 08:40) [5]


> С0 С1 С2
> С0 2В С0


Это точно? Или ты сейчас ручками по таблице символов переводил?


 
armstrong   (2011-09-01 08:45) [6]

не могли бы вы без ироний подсказать свою версию,
я бы проверил


 
Медвежонок Пятачок ©   (2011-09-01 09:09) [7]

ведь код - (2D) менее Б

Зато код A менее А


 
Медвежонок Пятачок ©   (2011-09-01 09:19) [8]

Это точно? Или ты сейчас ручками по таблице символов переводил?

Может и точно.
Он же не оговорит, что ордер бай у него сделан по тому же самому полю, чьи значения он здесь привел.


 
armstrong   (2011-09-01 09:25) [9]

Медвежонок Пятачок ©,
немножко не понял вашу мысль..

Ega23 ©, может вы имеете ввиду то, что в другой кодировке храняться данные в базе?
но по-моему код hyphen-minus будет всегда меньше, в какой кодировке не были бы.

Inovet ©, в collation не лез, всё по умолчанию..


 
armstrong   (2011-09-01 09:40) [10]

может и правда с collation  нужно было поиграться?
я так понимаю все параметры можно посмотреть в fn_helpcollations() ?


 
armstrong   (2011-09-01 09:50) [11]

Медвежонок Пятачок ©, конечно же order by по этому полю и делаю, откуда и возникает такой вопрос..


 
Ega23 ©   (2011-09-01 10:31) [12]


> может вы имеете ввиду то, что в другой кодировке храняться
> данные в базе?
> но по-моему код hyphen-minus будет всегда меньше, в какой
> кодировке не были бы.


Я имею ввиду ровно то, что имею ввиду.
Прочитай посимвольно строку и выдай сюда результат в hex. Может быть у "A-A" сзади пробел или символ табуляции? Может быть у "AБВ" первый символ - латинский. Можеь быть это не тире, а короткое тире.
StrComp и AnsiStrComp показывают, что "АБВ" > "А-А". Поэтому давай сюда реальные hex-значения строк, а не твои предположения "по-моему"


 
armstrong   (2011-09-01 11:25) [13]

Ega23 ©,

000000: C0 C1 C2
000000: C0 2D C0

тут даже проблема не в том.. это я для примера..
столкнулся с тем, что папки сканирую и кидаю в таблицу.
в тотале том же смотрю папки - первая идет А-.... затем уже типа Абв...
в таблице же (по order by выбор)) смотрю папка А- стоит на последнем месте.
проверяю код, - при сканировании директорий система её первую находит и первую я добавляю в базу.
немножко для меня это важно, поэтому хотел уточнить почему так и как с этим бороться.
проверял только под ADO


 
Ega23 ©   (2011-09-01 11:29) [14]


> в таблице же (по order by выбор)) смотрю папка А- стоит
> на последнем месте.


1. Тип СУБД.
2. Скрипт создания таблицы.
3. Код добавления данных в БД.


 
Медвежонок Пятачок ©   (2011-09-01 11:34) [15]

такой простой вопрос, а поставил автора в тупик.

встретил странное - локализуй причину чуда.

убери адо, сделай запрос в нативном инструменте.
убери сканирование папапок, - сделай явный инсерт С0 С1 С2, С0 2В С0
и так далее.


 
armstrong   (2011-09-01 11:42) [16]

спасибо за ответы, просто дома балуюсь вечерами.
прийду с работы попробую обязательно и отпишусь


 
Ega23 ©   (2011-09-01 13:26) [17]


> в тотале том же смотрю папки - первая идет А-.... затем
> уже типа Абв...

Кстати. Total Commander на Delphi написан. Соответственно, порядок должен совпадать (по-идее).
Интересный вопрос.
Давай вечером вываливай сюда всю подноготную:
1. Тип СУБД
2. Скрипт создания таблицы.
3. Код сканирования директории.
4. Код добавления данных в СУБД.
5. Код выборки данных из СУБД (с телом запроса).
6. Код сортировки данных на клиенте.
7. Сами данные: 3 директории с именами А-А, АБВ и ещё какую-нибудь. Только файлы внутри удали. Заархивируй и выложи куда-нить.


 
Anatoly Podgoretsky ©   (2011-09-01 13:44) [18]


> не могли бы вы без ироний подсказать свою версию,

Тебе же сказали Collation


 
Anatoly Podgoretsky ©   (2011-09-01 13:45) [19]


> Он же не оговорит, что ордер бай у него сделан по тому же
> самому полю, чьи значения он здесь привел.

Он вообще партизан и хулиган, почему то считает, что это к программированию в Дельфи как то относится.


 
Anatoly Podgoretsky ©   (2011-09-01 13:46) [20]


> Inovet ©, в collation не лез, всё по умолчанию..

То есть у тебя английская collation что ли? И чего ты тогда хочешь?


 
Ega23 ©   (2011-09-01 13:47) [21]


> Тебе же сказали Collation


Разве collation должен играть какую-то роль при сортировке на клиенте? По-идее - strcmp и вперёд с песней.
Хотя может всё печальней оказаться.


 
Anatoly Podgoretsky ©   (2011-09-01 13:49) [22]


> armstrong   (01.09.11 11:25) [13]
> Ega23 ©,
>
> 000000: C0 C1 C2
> 000000: C0 2D C0
>
> тут даже проблема не в том.. это я для примера..
> столкнулся с тем, что папки сканирую и кидаю в таблицу.
> в тотале том же смотрю папки - первая идет А-.... затем
> уже типа Абв...

АБВ <> Абв

специально запутываешь?


 
Ega23 ©   (2011-09-01 13:53) [23]


> То есть у тебя английская collation что ли? И чего ты тогда хочешь?


А какая разница? Если в гексе всё именно так, как ТС привёл
000000: C0 C1 C2
000000: C0 2D C0
то, по-идее, что win1251, что какая другая. Первая строка будет больше, чем вторая, тупо по побайтному сравнению.


> АБВ <> Абв


Это да. Но изначально вопрос был про "А-А" и "АБВ". Я-ж ещё ночью засомневался, проверил тупо по StrComp и AnsiStrComp. "А-А" - в обоих случаях меньше.


 
Anatoly Podgoretsky ©   (2011-09-01 13:59) [24]

> Ega23  (01.09.2011 13:53:23)  [23]

Не надо побитно сравнивать, если collation не BIN-xxxx


 
Inovet ©   (2011-09-01 14:37) [25]

> [21] Ega23 ©   (01.09.11 13:47)
> Разве collation должен играть какую-то роль при сортировке
> на клиенте?

Почему на клиенте, когда в ORDER BY.

> [23] Ega23 ©   (01.09.11 13:53)
> А какая разница? Если в гексе всё именно так, как ТС привёл
> 000000: C0 C1 C2
> 000000: C0 2D C0

Все русские будут равны 00 при сравнении.
Что-нибудь такое
000000: 00 00 00
000000: 00 2D 00


 
Ega23 ©   (2011-09-01 14:40) [26]


> Все русские будут равны 00 при сравнении.


Оп-па... Это точно?
Я просто с такой фигнёй ни разу не сталкивался. Какой collate на столбец надо наложить для, допустим, MSSQL? Ну для 2005 или 2008 (других под рукой нет).


 
Inovet ©   (2011-09-01 15:15) [27]

> [26] Ega23 ©   (01.09.11 14:40)
> Какой collate на столбец надо наложить для, допустим, MSSQL?

Не могу сказать, надо смотреть, как там. Но в общем, не только в MSSQL, эффекты всякие могут быть. Кстати, может быть и АБВ = Абв.


 
Ega23 ©   (2011-09-01 15:44) [28]


>  Кстати, может быть и АБВ = Абв.


Collation с CI на CS поменять.
З.Ы. помню, долго с этой фигнёй мучился, пару дней искал.
З.З.Ы. Да, походу проблема действительно в Collation.


 
Anatoly Podgoretsky ©   (2011-09-01 16:15) [29]

> Inovet  (01.09.2011 15:15:27)  [27]

Я обычно использую ххх_CI_AS но потому мне так надо. Он еще учитывает
телефонную сортировку 11-123 и 11123 равные строки


 
armstrong   (2011-09-01 19:09) [30]

ну вот посмотрите, набросал быстро код, выложил на  http://ifolder.ru/25510211

у меня сортирует так:

A-A
AAAA
A-СТУДИО
АЮЮ

почему  A-СТУДИО не идет за А-А ?


 
armstrong   (2011-09-01 19:12) [31]

хм.. в проводнике так же отображаются папки как и в проге..
а в total commandere

A-A
A-СТУДИО
...

ещё больше запутался ))


 
asail ©   (2011-09-01 19:38) [32]


> armstrong   (01.09.11 19:09) [30]

Может, все ж у тебя в 2-х первых строках буква А англицкая, а в 2-х следующих - русские? Замени всюду "А" на что-то более однозначное: "Б" например...


 
Inovet ©   (2011-09-01 19:58) [33]

> [32] asail ©   (01.09.11 19:38)
> Может, все ж у тебя в 2-х первых строках буква А англицкая,
> а в 2-х следующих - русские?

В архиве все русские.


 
armstrong   (2011-09-01 20:02) [34]

да русские в том-то и дело..
непойму почему и винда в проводнике так же криво сортирует..
а может тут какой-то сокрыльный смысл..
пока не нашел смысла..
а как сделать
A-A
A-СТУДИО
в списке - вообще и мыслей нет..


 
Inovet ©   (2011-09-01 20:09) [35]

> [34] armstrong   (01.09.11 20:02)

У винды применение интеллекта для сортировки достает, поэтому очень редко через эксплорер смотрю.


 
Медвежонок Пятачок ©   (2011-09-01 20:09) [36]

A-A
A-СТУДИО


a-a = ""
a-студио = <> ""

:)


 
Anatoly Podgoretsky ©   (2011-09-01 20:10) [37]

> armstrong  (01.09.2011 19:09:30)  [30]

Потому что у тебя телефонное сравнение. тире игнорируется. и у тебя
отсортировано как

AA
AAAA
AСТУДИО
АЮЮ

Очень удобная сортировка для телефонов


 
Inovet ©   (2011-09-01 20:12) [38]

> [29] Anatoly Podgoretsky ©   (01.09.11 16:15)
> Он еще учитывает телефонную сортировку 11-123 и 11123 равные строки


 
Anatoly Podgoretsky ©   (2011-09-01 20:13) [39]

> armstrong  (01.09.2011 19:12:31)  [31]

Сделай вывод, что TC кривой


 
asail ©   (2011-09-01 20:14) [40]


> Anatoly Podgoretsky ©   (01.09.11 20:10) [37]

Похоже на правду... Тока с чего бы винде в експлорере телепонное сравнение использовать?


 
armstrong   (2011-09-01 20:14) [41]

Anatoly Podgoretsky, я понимаю что вы подтолкнуть меня хочете к collation
я msdn почитал, посмотрел несколько сотен параметров и пока не понял.
- не могли бы подсказать как запрос составить?
- почему по умолчанию стоит телефонное сравнение?
- почему всё-таки A-A не вместе с А-студио, телефоны разные ? (:


 
Inovet ©   (2011-09-01 20:16) [42]

> [40] asail ©   (01.09.11 20:14)
> Тока с чего бы винде в експлорере телепонное сравнение использовать?

Потому что так естественно для большинства юзеров, кроме программистов.


 
Inovet ©   (2011-09-01 20:17) [43]

> [41] armstrong   (01.09.11 20:14)
> почему всё-таки A-A не вместе с А-студио, телефоны разные
> ?

Да

АА
АААА
AСТУДИО


 
armstrong   (2011-09-01 20:17) [44]

TC не кривой думаю всё-таки (:
т.к имена папок делать телефонными номерами очень большая редкость, и той же винде должно быть понятно, что папки это просто строки. так что скорее винда кривая )

помогите правильно составить запрос да и закроем эту тему )


 
asail ©   (2011-09-01 20:19) [45]


> Inovet ©   (01.09.11 20:16) [42]

Оно естественно для номеров телефонов, а не для всех типов файлов. Наверное...


 
Inovet ©   (2011-09-01 20:19) [46]

> [44] armstrong   (01.09.11 20:17)
> так что скорее винда кривая

Мозг у лидей так устроен


 
Inovet ©   (2011-09-01 20:21) [47]

> [45] asail ©   (01.09.11 20:19)
> а не для всех типов файлов

Посмотри индекс в энциклопедии, какой-нибудь Нью-Йорк где будет, интересно.


 
Anatoly Podgoretsky ©   (2011-09-01 20:22) [48]

> asail  (01.09.2011 20:14:40)  [40]

Видимо из тех же соображений. Или прими как есть.


 
Anatoly Podgoretsky ©   (2011-09-01 20:23) [49]

> armstrong  (01.09.2011 20:14:41)  [41]

По умолчанию там стоит, что случайно получилось при инсталяции, но каждый
специалист обязан выставить нужное.


 
Inovet ©   (2011-09-01 20:27) [50]

Из указателя Мифы народов мира
Москва Советская энциклопедия 1992

Абасы
Аба-хатан


 
Anatoly Podgoretsky ©   (2011-09-01 20:32) [51]

> asail  (01.09.2011 20:19:45)  [45]

Ну не будут они решать телефон это или нет.
Если ты не в курсе, то американцы любят буквы, а не цифры в номерах.
Ну тупые (с)


 
asail ©   (2011-09-01 20:34) [52]


> Anatoly Podgoretsky ©   (01.09.11 20:32) [51]

> Ну тупые (с)

Наоборот. Букав больше, чем цифр... :)


 
Anatoly Podgoretsky ©   (2011-09-01 20:35) [53]

Тире в основном вставляет для улучшения чтения, для разбивки и является незначищим символом, просто на примере с телефонами так понятное.
Естественно никто не будет делать разную обработку для файлов, основываясь только на мнение отдельного программиста. Иногда позволяют сделать выбор, но все равно для всех одинаково, а не выборочно, эти файлы так, а эти иначе.


 
asail ©   (2011-09-01 20:38) [54]


> Anatoly Podgoretsky ©   (01.09.11 20:35) [53]

Да понятно все... Как-то не обращал раньше на это внимание. Но, спасибо - приму к сведению...


 
armstrong   (2011-09-01 20:42) [55]

вы это расскажите Задорнову (:

у меня инет через мобилку сейчас, с большой надеждой жду подсказки правильного запроса.

я даже не могу понять как прочитать список в ADO доступных параметров collations.

есть ли она fn_helpcollations в ADO и если да то как прочитать?

от фонарая что нашел в нете подставлял:

 mySQL = "select kod, naimen from "+myNaimenTable+#13+
         "order by naimen"+#13+
         "COLLATE Latin1_General_CS_AS_KS_WS ASC";

получал в ответ "Неопознанная ошибка"

ай нид хелп!


 
armstrong   (2011-09-01 21:01) [56]

хм.. изменение типа поля решило проблему

    ADOConnection1.Execute("create table "+myNaimenTable+" ("+
    "kod Integer PRIMARY KEY,"+
    "naimen varchar"+
    ")");

а как же быть всё-таки со строкой?


 
armstrong   (2011-09-01 21:10) [57]

прошу прощения, varchar ничего не решил.. уже моск кипит..


 
Inovet ©   (2011-09-01 21:10) [58]

При создании таблицы укажи или для всей базы.


 
armstrong   (2011-09-01 21:28) [59]

при создании базы , например
"Jet OLEDB:COLLATE Latin1_General_BIN;"
матюкается "Невозможно найти устанавливаемый ISAM"

на создании таблицы не знаю пока что как можно указать collate


 
Anatoly Podgoretsky ©   (2011-09-02 09:33) [60]

> armstrong  (01.09.2011 21:01:56)  [56]

А где здесь collation?


 
Anatoly Podgoretsky ©   (2011-09-02 09:34) [61]

> armstrong  (01.09.2011 21:28:59)  [59]

Да такого ISAM нет


 
Anatoly Podgoretsky ©   (2011-09-02 09:36) [62]


> Ega23 ©   (01.09.11 11:29) [14]
>
> 1. Тип СУБД.

100 евро


 
armstrong   (2011-09-02 12:33) [63]

Anatoly Podgoretsky ©, может поможете если знаете как?


 
Омлет ©   (2011-09-02 12:39) [64]

Тип СУБД - секретная информация.


 
Anatoly Podgoretsky ©   (2011-09-02 13:11) [65]

Партизанам помощи нет


 
armstrong   (2011-09-02 13:19) [66]

почему я партизан?

вы же код видели приведенный мной,
через Microsoft Jet, который является ядром СУБД Microsoft Access, втроенной в винду.

возможно я не сильно грамотен в этом плане..


 
Ega23 ©   (2011-09-02 13:22) [67]


>  Microsoft Jet, который является ядром СУБД Microsoft Access,
>  втроенной в винду



………………..,-~*’`&#175;lllllll`*~,
…………..,-~*`lllllllllllllllllllllllllll&#175;`*-,
………,-~*llllllllllllllllllllllllllllllllllllllllllll*-,
……,-*llllllllllllllllllllllllllllllllllllllllllllllllllllll.\
….;*`lllllllllllllllllllllllllll,-~*~-,llllllllllllllllllll\
…..\lllllllllllllllllllllllllll/………\;;;;llllllllllll,-`~-,
……\lllllllllllllllllllll,-*………..`~-~-,…(.(&#175;`*,`,
…….\llllllllllll,-~*…………………)_-\..*`*;..)
……..\,-*`&#175;,*`)…………,-~*`~.……………/
………|/…/…/~,……-~*,-~*`;……………./.\
……../…/…/…/..,-,..*~,.`*~*…………….*…\
…….|…/…/…/.*`…\………………………)….)&#175;`~,
…….|./…/…./…….)……,.)`*~-,…………/….|..)…`~-,
……/./…/…,*`-,…..`-,…*`….,---……\…./…../..|………&#175;```*~-
……(……….)`*~-,….`*`.,-~*.,-*……|…/.…/…/…………\
…….*-,…….`*-,…`~,..``.,,,-*……….|.,*…,*…|……\
……….*,………`-,…)-,…………..,-*`…,-*….(`-,…


 
armstrong   (2011-09-02 13:23) [68]

и насколько я понимаю Microsoft Jet это не настоящая СУБД.
поэтому и не знаю как ответить на ваш вопрос..


 
armstrong   (2011-09-02 13:25) [69]

Ega23 ©, это рисунок ?
хоть нихрена не понятно, но наверное касается моих познаний..


 
Anatoly Podgoretsky ©   (2011-09-02 15:19) [70]

> armstrong  (02.09.2011 13:19:06)  [66]

Потому что потребовалось 66 постов, что бы привести используемую СУБД, думаю
если бы не наша настойчивость, то мы бы этого не узнали совсем.
Collation ты сможешь использовать только в ADOX, вряд ли это тебе по силам.


 
armstrong   (2011-09-02 16:13) [71]

ну я ведь создаю базу через ADOX.
подскажите какого провайдера тогда использовать и как будет выглядеть запрос создания базы с параметром COLLATE  ?

function CreateDatabase(DatabaseName: String): Boolean;
var
 cat: OLEVariant;
begin
 Result:= true;
 try
   cat:= CreateOleObject("ADOX.Catalog");
   cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DatabaseName + ";Jet OLEDB:Engine Type=5");
   cat:= null;
 except
   on e: Exception do begin
      ShowMessage(e.message);
      result:= false;
   end;
 end;
end;


 
armstrong   (2011-09-02 16:34) [72]

я как понял Microsoft.Jet урезанный и ничего с сортировкой в моём случаи сделать нельзя?

мне не хотелось бы, что бы программа требовала дополнительную установку чего либо.
с виндой что идет кроме Microsoft.Jet.OLEDB ?


 
armstrong   (2011-09-02 16:42) [73]

"Collation ты сможешь использовать только в ADOX"

совершенно не понимаю вышу мысль!
что такое ADOX?
может вы хотели сказать что через провайдера текущего "Microsoft.Jet.OLEDB.4.0"  я не смогу использовать Collation ?

вообщем насколько я понял вы сами нихрена не знаете..
тему можете закрывать..


 
Anatoly Podgoretsky ©   (2011-09-02 16:53) [74]

> armstrong  (02.09.2011 16:13:11)  [71]

А я не использую ADOX


 
Anatoly Podgoretsky ©   (2011-09-02 16:54) [75]

> armstrong  (02.09.2011 16:34:12)  [72]

Не урезаный, а особенный, до эры SQL, такой старик



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2011.12.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.006 c
15-1314649794
Юрий
2011-08-30 00:29
2011.12.18
С днем рождения ! 30 августа 2011 вторник


15-1312615274
PreDatoR
2011-08-06 11:21
2011.12.18
Ваши любимые компьютерные игры


2-1315467611
Pushok
2011-09-08 11:40
2011.12.18
проверить ветки в TreeView


2-1315378230
Виктор
2011-09-07 10:50
2011.12.18
Предупреждение


2-1315465617
user1987
2011-09-08 11:06
2011.12.18
Вывод текста на рабочий стол





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский