![]() |
|
|
![]()
|
|
| Dynamic |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Привет! Помогите написать запрос (BDE/Paradox):
есть таблица, типа St_Id St_Name1 St_Name2 St_Name3 St_BirthDay St_DateVid
в таблице надо оставить только неповторяющиеся записи с максимальным значением Даты, т.е., чтобы получилось так:
Выбрать такие записи получается, а вот правильно удалить - нет. Так выбираю:
Получается
Который час бьюсь Заранее спасибо всем ответившим. Это сообщение отредактировал(а) Dynamic - 21.4.2005, 17:00 -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||||||
|
|||||||||
| Негодяй |
|
|||
|
Порядочный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1513 Регистрация: 13.2.2005 Где: Kazakhstan, Almat y Репутация: нет Всего: 32 |
эх, подзабыл уже всё на фиг, но может в этом проблема? и есть заменитель вроде как этой операции просто запретить дублирование? а не как в твоём случае который машина понимает наверное как "именно опираясь на запрос, где больше 1 значит мне это и нужно"? Это сообщение отредактировал(а) Негодяй - 21.4.2005, 15:07 |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Смысл в том, что мне нужно профильтровать таблицу на наличие дубликатов записей о клиентах. Если клиент внесен один раз, то мы его пропускаем, если 2 и больше, то оставляем только того, у которого более поздняя дата St_DataVid, остальных удаляем.
После моего запроса в НД попадают как раз те данные, клиентов с которыми надо оставить. Но вот что делать дальше - ума не приложу. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Негодяй |
|
|||
|
Порядочный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1513 Регистрация: 13.2.2005 Где: Kazakhstan, Almat y Репутация: нет Всего: 32 |
а если сначала поудалять минимальные значения st_datavid (вместо max - min), цикл не заканчивать пока запрашиваемая запись (count) не будет равна 1; затем повторить вышеописанный запрос без параметра having...?; а если вместо всего так сделать having count(*)>=1? Это сообщение отредактировал(а) Негодяй - 21.4.2005, 16:00 |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Там в первом посте ошибочка закралась в текст запроса (от одного тестового прогона), уже убрал. Суть не меняется.
Тогда Having можно вообще убрать. Над остальным думаю... -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 3 Всего: 7 |
Тут видится следующая технология:
--------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Сдается мне, что производится попытка удаления ВСЕХ записей, КРОМЕ тех, что удовлетворяют выборке, т.е. и "одиночных" тоже.
Это сообщение отредактировал(а) Dynamic - 22.4.2005, 17:29 -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Golden Hands |
|
||||
![]() Золотой ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2023 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: 2 Всего: 83 |
Почтенные, не мучайтесь.
Вот правильный Select (насколько я понял САБЖ):
И, соответственно, Delete:
-------------------- Мы обречены... но только на победу! Настанет день, и мы построим новый дом. Внесем в него тепло, что сохранить сумели, И воскресим все то, что в нас когда-то умерло... © Тень Света |
||||
|
|||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Да вроде пришли к мнению, что Парадокс не поддерживает вложенные селекты.
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Golden Hands |
|
|||
![]() Золотой ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2023 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: 2 Всего: 83 |
И то правда, не поддерживает.
Вот, если интересно - http://forum.vingrad.ru/index.php?showtopic=14299 -------------------- Мы обречены... но только на победу! Настанет день, и мы построим новый дом. Внесем в него тепло, что сохранить сумели, И воскресим все то, что в нас когда-то умерло... © Тень Света |
|||
|
||||
| Dimich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 25.8.2004 Где: Брянск Репутация: 3 Всего: 7 |
Ну тогда только навигационным методом можно решить эту задачу, т.е. писать процедуру.
--------------------
Не работает - исправь, работает - не трогай!!! |
|||
|
||||
| innok |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 12.10.2004 Репутация: 1 Всего: 1 |
решалась похожая проблема, т.е. надо было выбрать наименование организации с максимальной датой. Мож удастся приспособить:
[code=delphi] Это сообщение отредактировал(а) innok - 28.4.2005, 14:45 |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
НаписАл уже (TQuery + TTable). -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Есть вариант с исользованием только SQL (без TTable), правда придется создавать одну промежуточную таблицу. Если устраивает такой вариант - телеграфируй, напишу
|
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 2 Всего: 15 |
Спасибо, уже не надо: я перевожу проект на FireBird, попытаюсь переделать сабж через вложенные select'ы, как мне подсказывали ранее
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
![]()
|
| Правила форума "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. |