![]() |
|
|
![]()
|
|
| ТоляМБА |
|
||||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Delphi 6, ADO, dBase IV
Здравствуйте! У меня возникла следующая проблема Есть следующая табла (для примера) ONE; TWO; TRE a; 5,00000; 1 b; 10,00000; w b; 10,00000; e a; 5,00000; 1 Выполняем запрос SQL:
Видим результат: ONE; TWO; TRE a; 5,00000; 1 b; 10,00000; w b; 10,00000; e a; 5,00000; 1 Выполняем другой запос SQL:
В результате получаем: ONE; TWO; TRE a; 5,00000; 1 b; 10,00000; e b; 10,00000; w Вот скажите мне – какого … SQL поменял местами положение строк ONE=’b’? Я его просил? Как этого избежать? То есть чтоб одинаковые строки не выводились, а неодинаковые оставались в той же последовательности, что и были. Вопрос горящий. |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
сортировкой строк в SQL управляет оперетор ORDER BY.
а то что запрос тебе 100 раз вывел в одном поряке строки, это незначит, что в 101 раз они выведутся именно так же. |
|||
|
||||
| SPrograMMer |
|
|||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: 1 Всего: 6 |
УГУ! и есчо на эту же тему: вообще-то понятия нумерации строчек в БД нету, нельзя сказать что вот эта запись - первая, а вот это тринадцатая, в связи с этим ОБЫЧНО в каждой реляцонной таблице, создаётся первичный ключ, который и будет показывать "номер" записи. Я имею ввиду что записи в таблицах неупорядочены ни по какому критерию. Запрос на изменение набора данных - Insert строго говоря может "всунуть" новую запись, как в "конец" так и в "начало", так и куда нить в середку. -------------------- животное = зверь законченный гентушник |
|||
|
||||
| <Spawn> |
|
||||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
Ввести первичный ключ(допустим, назовем его pkey), который будет увеличиваться при каждой вставляемой новой записи и допсать запрос так:
либо, если тебе известен критерий последовательности получаемых данных, то можно использовать нужные поля для сортировки, допустим так:
Кстати, прими к сведению, что distinct крайне тяжелая операция и употреблять ее следует с большой осторожностью, т.к. она сначала тянет записи клиенту, а потом только устраняет дубликаты(хотя может в других СУБД и не так - я сужу по Oracle Это сообщение отредактировал(а) <Spawn> - 21.5.2005, 06:13 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||||
|
|||||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
2 <Spawn> Хотя я так уже и сделал сам, всё равно - БОЛЬШОЕ СПАСИБО. Теперь я хоть уверен, что на правильном пути.
А насчёт
Так у меня база локальная, небольшая в формате dBase. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Distinct по трём полям это кхе-кхе... не хорошо... напрашивается нормализация таблиц...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
2 VIT
Sorry. Оговорился. У меня не
|
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 1 Всего: 154 |
Если я не ошибаюсь, в MSSQL такая же ботва. -------------------- |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Не могу сказать про dbase, на MS SQL Server - такие вопросы решаются установкой уникального индекса по всем трём полям с указанием опции игнорирования дубликатов. Насколько я знаю BDE+Paradox работают так же... Имеет смысл покопаться в опциях чтобы предотвратить попадание мусора, чем потом разгребать его
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |