Главная страница
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.054 c
6-1101848996
noname:)
2004-12-01 00:09
2005.02.13
Старый добрый net send:)


14-1106563671
Чеширский_Кот
2005-01-24 13:47
2005.02.13
500-я ошибка: избирательное поведение сайта Мастеров


3-1105556863
про
2005-01-12 22:07
2005.02.13
Sortirovka zapisej v alfavitnom porjadke


1-1106898354
Mishenka
2005-01-28 10:45
2005.02.13
Click по заголовку столбца в DbGridEh


14-1106534898
Думкин
2005-01-24 05:48
2005.02.13
С Днем рождения! 24 января