Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

Как на Sql найти "осиротевшую" запись?   Найти похожие ветки 

 
armada   (2005-01-14 23:12) [0]

Как на 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.


 
sniknik ©   (2005-01-14 23:52) [1]

если конечно BDE это позволяет ...
SELECT dat,tim,summa,fio,Min(flag) AS flag FROM SqlTable
GROUP BY dat,tim,summa,fio
HAVING Count(*)=1


 
Anatoly Podgoretsky ©   (2005-01-15 00:01) [2]

Из запроса можно выкинуть dat,tim,summa, поскольку они для поиска не нужны. Вот чего не вижу так это первичного ключа, может просто не указан?


 
Anatoly Podgoretsky ©   (2005-01-15 00:03) [3]

И не много не понятно использование MIN мне кажется можно обойтись без него (это для того чтобы исключить из групирования?). Хотя насчет dat,tim,summa замечание снимаю, поскольку недостаточный объем данных для точного анализа.


 
sniknik ©   (2005-01-15 00:07) [4]

Anatoly Podgoretsky
MIN (а можно и MAX, в аксессе бы first поставил бы) для того чтобы в результирующем наборе иметь и поле flag тоже (не ставить же его в группировку они все разные, а без групировки только агрегат... сорри ;о))


 
Anatoly Podgoretsky ©   (2005-01-15 00:20) [5]

Ла но что будет например для этих двух строк?

04.01.2003  12:13:00  5000   иванов    T
04.01.2003  12:13:00  5000   иванов    А

По моему пониманию, должна быть возвращена только одна запист, конкретно вторая и having будет равен единице или я ошибаюсь?


 
Anatoly Podgoretsky ©   (2005-01-15 00:28) [6]

Я проверил подобный запрос на MS SQL у меня выдал все сгрупированые записи независимо от количество записей


 
Anatoly Podgoretsky ©   (2005-01-15 00:50) [7]

Приношу извинения, неправильно проводил тест, все работает, даже в более понятном, для меня, виде

SELECT dat,tim,summa,fio, Count(*) FROM SqlTable
GROUP BY dat,tim,summa,fio
HAVING Count(*)=1


 
armada   (2005-01-16 13:31) [8]

Спасибо Anatoly Podgoretsky все работает.
А то я блин велосипед изобретал.
А тут все просто !
Еще раз спасибо



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

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
8-1098903047
Alein
2004-10-27 22:50
2005.02.13
Эффект Bevel (как в Photoshope)


4-1103881879
tradakad
2004-12-24 12:51
2005.02.13
ОТображение форму , создаваемой из DLL модально


1-1106803697
Demir
2005-01-27 08:28
2005.02.13
Тема Excel


14-1106300912
syte_ser78
2005-01-21 12:48
2005.02.13
Как определить чего дейтсвительно хочеш?


9-1099757382
Creep
2004-11-06 19:09
2005.02.13
Rotate in OpenGL