Форум: "Базы";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизКак на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c