![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как на Sql найти "осиротевшую" запись? [D5, Paradox]
armada © (2005-01-14 23:12:00)Как на Sql найти "осиротевшую" запись? т.е. база имеет структуру:
dat tim summa fio flag
04.01.2003 12:13:00 5000 иванов T
04.01.2003 12:13:00 5000 иванов А
05.01.2003 14:05:00 8000 петров T
05.01.2003 14:05:00 8000 петров F
05.01.2003 14:05:00 9000 сидоров T
В базе идут двойные строки отличающиеся только полем flag.
Как найти записи без "напарника" (в примере сидоров)
Использую D5+Paradox+BDE+query.
armada (2005-01-16 13:31:00) [1]Спасибо Anatoly Podgoretskyвсе работает.
А то я блин велосипед изобретал.
А тут все просто !
Еще раз спасибо
Anatoly Podgoretsky (2005-01-15 00:50:00) [2]Приношу извинения, неправильно проводил тест, все работает, даже в более понятном, для меня, виде
SELECT dat,tim,summa,fio, Count(*)FROM SqlTable
GROUP BY dat,tim,summa,fio
HAVING Count(*)=1
Anatoly Podgoretsky (2005-01-15 00:28:00) [3]Я проверил подобный запрос на MS SQL у меня выдал все сгрупированые записи независимо от количество записей
Anatoly Podgoretsky (2005-01-15 00:20:00) [4]Ла но что будет например для этих двух строк?
04.01.2003 12:13:00 5000 иванов T
04.01.2003 12:13:00 5000 иванов А
По моему пониманию, должна быть возвращена только одна запист, конкретно вторая и having будет равен единице или я ошибаюсь?
sniknik (2005-01-15 00:07:00) [5]Anatoly Podgoretsky
MIN (а можно и MAX, в аксессе бы first поставил бы) для того чтобы в результирующем наборе иметь и поле flag тоже (не ставить же его в группировку они все разные, а без групировки только агрегат... сорри ;о))
Anatoly Podgoretsky (2005-01-15 00:03:00) [6]И не много не понятно использование MIN мне кажется можно обойтись без него (это для того чтобы исключить из групирования?). Хотя насчет dat,tim,summa замечание снимаю, поскольку недостаточный объем данных для точного анализа.
Anatoly Podgoretsky (2005-01-15 00:01:00) [7]Из запроса можно выкинуть dat,tim,summa, поскольку они для поиска не нужны. Вот чего не вижу так это первичного ключа, может просто не указан?
sniknik (2005-01-14 23:52:00) [8]если конечно BDE это позволяет ...
SELECT dat,tim,summa,fio,Min(flag) AS flag FROM SqlTable
GROUP BY dat,tim,summa,fio
HAVING Count(*)=1