Вниз
Скачать: 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.971 c
1-1106747451
mmms
2005-01-26 16:50
2005.02.13
Мастера, подскажите, как удалить строку из StringGrid


14-1106244642
netnetnetnet
2005-01-20 21:10
2005.02.13
Физика


6-1101589196
leonidus
2004-11-27 23:59
2005.02.13
Использование кукисов в Indy


1-1106828861
WhiteGuy
2005-01-27 15:27
2005.02.13
FreeDiskSpace?


14-1106412036
Никита
2005-01-22 19:40
2005.02.13
Помогите найти Kylix!




   Наверх