Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-1103274786
TankMan
2004-12-17 12:13
2005.02.13
Как получить доступ к BIOS-у из WinNT (а еще и из Win9X)?


14-1106457948
Чеширский_Кот
2005-01-23 08:25
2005.02.13
Doxygen


14-1106690642
Narik
2005-01-26 01:04
2005.02.13
Как всегда ВОПРОС!


1-1106946843
Bobby Digital
2005-01-29 00:14
2005.02.13
Hint


4-1104220306
Kair
2004-12-28 10:51
2005.02.13
Мастера, научите!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский