Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2013, 16:44   #1
bobik47
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию MS SQL. Уникальные строки.

Здравствуйте, уважаемые форумчане!

Требуется Ваша квалифицированная помощь, вдруг кто-то сталкивался.
Есть таблица, из которой которой необходимо выбрать уникальные записи по следующим признакам:
могут быть одновременно одинаковые записи в 2 колонках, но при этом должна быть разница во времени (3тия колонка) не более 15 минут.
То есть, например:
Молоко | Продукты | 15:00:00
Молоко | Продукты | 15:05:00
Молоко | Продукты | 17:55:00

В этом примере 2 уникальные колонки, поскольку в 1 и 2ой строке разница во времени менее 15 минут.

Очень надеюсь на Вашу помощь! Спасибо!
bobik47 вне форума Ответить с цитированием
Старый 19.09.2013, 16:57   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вот любопытно, а вот здесь сколько уникальных "колонок"?
Молоко | Продукты | 16:55:00
Молоко | Продукты | 17:00:00
Молоко | Продукты | 17:12:00
Молоко | Продукты | 17:23:00
Молоко | Продукты | 17:36:00
Молоко | Продукты | 17:45:00
Молоко | Продукты | 15:35:00
Молоко | Продукты | 15:45:00
Молоко | Продукты | 15:55:00
Молоко | Продукты | 16:05:00
Молоко | Продукты | 16:15:00
Молоко | Продукты | 16:25:00
Молоко | Продукты | 16:35:00
Молоко | Продукты | 16:45:00
Молоко | Продукты | 17:55:00
Молоко | Продукты | 15:00:00
Молоко | Продукты | 15:05:00
Молоко | Продукты | 15:15:00
Молоко | Продукты | 15:25:00
?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.09.2013, 17:13   #3
bobik47
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию

Вы правы, вот только пример я утрировал, и одинаковые записи с разницей менее 15 минут встречаются редко.

Последний раз редактировалось bobik47; 20.09.2013 в 15:55.
bobik47 вне форума Ответить с цитированием
Старый 20.09.2013, 09:05   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно так попробовать, коряво, но может что и выгорит
Код:
SELECT DISTINCT T1.*
  FROM MyTable T1,MyTable T2
  WHERE T1.Column1=T2.Column1 AND T1.Column2=T2.Column2 AND 
        ABS(DATEDIFF(minute,T1.Column3,T2.Column3))<=15 AND T1.Column3<>T2.Column3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.09.2013, 09:49   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Вы правы, вот только пример я утрировал, и одинаковые записи с разницей мене 15 минут встречаются редко.
тем не менее хотелось бы получить ответ на заданный вопрос.

Если надо: выбрать только записи для которых за прошедшие 15 минут не было дубля.
Игнорировать записи если в прошедшие 15 минут такие уже были.
Код:
select t1.*
from tbl as t1
where NOT EXISTS (select * from tbl as t2 
                            where t1.col1=t2.col1 and t1.col2 =t2.col2 --то же наименование
                            AND datediff(t2.col3, t1.col3)<15 --за 15 минут  до времени t1.col
              and t1.col3<>t2.col3 --это не та же самая запись
ВОТ ИНТЕРЕСНО, а если в самом деле будет ДВЕ записи с одним временем?
Цитата:
записи с разницей мене 15 минут встречаются редко.
Но все-таки встречаются, а значит еще реже могут встретиться и с одинаковым (хотя бы в результате ошибки оператора ввода ЧЕЛОВЕКА)! или нет? БД никак не защищена от такой ситуации?
Не ДОЛЖНО быть и не МОЖЕТ быть две очень разные вещи.

P.S. не знаю чем будет отличаться от варианта Аватара. разве что отсутствием distinct
собственно он(вариант Аватара) и был в основе
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 20.09.2013 в 09:53.
evg_m вне форума Ответить с цитированием
Старый 20.09.2013, 10:07   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
ВОТ ИНТЕРЕСНО, а если в самом деле будет ДВЕ записи с одним временем?
Там бы просто иметь уникальный идентификатор в записи и эта проблема отпала бы сама собой. А так просто считать несколько записей с одним временем за одну или усложнять запрос счетчиком количества записей с одним временем
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.09.2013, 14:50   #7
bobik47
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию

Спасибо большое за советы, разобрался!
bobik47 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уникальные записи из БД Abuhamed PHP 5 01.07.2011 01:55
Уникальные значения Fezdipekla Microsoft Office Access 1 13.05.2010 11:02
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15
Уникальные значения SwiP SQL, базы данных 6 07.05.2009 23:22
Уникальные строки werser Microsoft Office Excel 1 02.04.2009 18:23