Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 638

/ вопрос открыт /

Здравствуйте, уважаемые!
Снова я с любимым SQL ... Так как я с ним не дружу, хотела "украсть" у MS_ACCESS готовый запрос на повторяющиеся строки. Выглядит он следующим образом:
SELECT BD_PO."stat" FROM BD_PO As Tmp GROUP BY BD_PO."stat", codcount, curcod, codt HAVING Count(*)>1 And codcount = BD_PO.codcount And curcod = BD_PO.curcod And codt=BD_PO.codt
В результате все повторяющиеся строки упорядочиваются.
В моей программе БД - Paradox, а этот запрос не работает.
Есть еще такой: SELECT BD_PO."stat", codcount, codt, curcod from BD_PO GROUP BY BD_PO."stat", codcount, codt, curcod HAVING COUNT(*)>1
В моей программе он работает, но оставляет в таблице только уникальные записи, остальные отбрасывает

Emma Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Emma (статус: Посетитель)
Вопрос отправлен: 31 мая 2008, 01:08
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 7 июня 2008, 10:46; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 31 мая 2008, 03:10 [#1]:

Я писал уже, отказывайтесь от BDE. Иначе надальше проблемы будут всё больше и больше.
BDE не все запросы умеет переваривать. Синтаксис всё таки немного отличается у разных БД.
К тому же, красть не хорошо.
посмотрите например на такую строку в запросе
codcount = BD_PO.codcount
Это сравнивание с самим собой. И как думаете, чему оно равно?
А вот эта строка
FROM BD_PO As Tmp
Это создание псевдонима для таблицы. Я не уверен, что BDE понимает такое. Но дальше Tmp не используется - по этому не понятно, зачем вообще это.
Вы запрос после аксеса модифицировали?
Галочка "подтверждения прочтения" - вселенское зло.
Emma

Emma (статус: Посетитель), 7 июня 2008, 10:46 [#2]:

да нет проблем. Просто надо поискать. Почитала книжки и разобралась )
Query2.Active:=false;
Query2.SQL.Clear;
Query2.SQL.Add('Select exp."stat", codcount, curcod, codt, count(*), Sum(exp."sum") from exp group by exp."stat", codcount, curcod, codt HAVING Count(*)>=1');
Query2.active:=true
Вот так вот все простенько оказывается делается.
А от BDE откажусь в следующем проекте. В этом менять уже нет ни времени, ни сил

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 октября 2017, 23:59
Выполнено за 0.03 сек.
Рейтинг@Mail.ru