Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
1-1107077596
focor
2005-01-30 12:33
2005.02.13
Вскрыть кнопку


1-1107005282
NeedHElp
2005-01-29 16:28
2005.02.13
Kak zapisat zapis v registri 4tob Ad-Wath nevoznikal??


1-1107157075
aleshap
2005-01-31 10:37
2005.02.13
Как программно добавить пакеты!


14-1106641412
Sergey13
2005-01-25 11:23
2005.02.13
HL2. Помогите найти выход из тупика.


3-1105535446
Виталий Панасенко
2005-01-12 16:10
2005.02.13
Определение параметров драйверов в БДЕ




   Наверх