| 
 | 
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Здравствуйте, уважаемые знатоки.  Есть таблица со следующими полями: Name, Date_Created, Start, End. Таблица заполнена по следующим условиям: Если есть Date_Created, то заполняются поля Start и End(берутся временные промежутки, куда попадает Date_Created). Если Date_Created пуста, то Start и End заполняются MAX(Start) и MAX(End) ( т.е. текущим промежутком, берутся из отдельной таблицы). Задача следующая: Необходимо отобрать все записи, в которой будут ТОЛЬКО те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created НЕ пуста. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 11:17 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  pr0b3l1987Задача следующая: Необходимо отобрать все записи, в которой будут  ТОЛЬКО  те записи, которые были в предыдущих временных промежутках, но не попали в текущий временной промежуток и где Date_Created  НЕ  пуста. Ничего не понял в постановке задачи... Сформулируй еще раз пожалуйста. Что означает "запись была во временном промежутке?" Это значит "Date_Created BETWEEN Start AND End" или что-то другое? Что значат фразы "предыдущий временной промежуток" и "текущий временной промежуток"? Предыдущий и текущий по отношению к чему? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 12:00 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  stomsky, есть вторая таблица tbl2 со значениями с полями Start, End и значениями примерно следующими: Start End ... 2017-07-09 2017-09-23 2017-07-24 2017-08-06 2017-08-07 2017-08-20 2017-08-21 2017-09-03 Если Date_Created попадает в один из промежутков из таблицы tbl2, то Start и End из tbl1 заполняются соответствующими значениями. Если Date_Created пуста, то, соответственно, выставляются максимальные значения из таблицы tb2 ( т.е. текущий промежуток времени). предыдущие временные промежутки - это все те, что не последние т.е. не текущий (2017-08-21 2017-09-03). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 12:06 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  pr0b3l1987Start              End ... 2017-07-09 2017-09-23 <-- ?????? 2017-07-24 2017-08-06 2017-08-07 2017-08-20 2017-08-21 2017-09-03 В этом примере первая строка задает временной интервал, перекрывающий все три следующих (с июля по сентябрь). Это очепятка? Я правильно догадываюсь, что интервалы в tbl2 не пересекаются, а идут строго один за другим? pr0b3l1987Если Date_Created попадает в один из промежутков из таблицы tbl2, то Start и End из tbl1 заполняются соответствующими значениями. Если Date_Created пуста, то, соответственно, выставляются максимальные значения из таблицы tb2 ( т.е. текущий промежуток времени). Значения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? По-моему, сравнивать надо значения tbl1.Date_Created с tbl2.Start и tbl2.End. Или я все-таки неверно понимаю задачу? pr0b3l1987предыдущие временные промежутки - это все те, что не последние т.е. не текущий (2017-08-21 2017-09-03). Т.е. "текущий временной промежуток" - это строка из таблицы tbl2, задающая интервал, в который попадает сегодняшняя дата? Вот сейчас у меня на календаре 23.08.2017, поэтому "текущим" стал приведенный тобой интервал (2017-08-21 2017-09-03). Верно? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 12:41 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  stomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе. Предлагаю такой вариант (T-SQL): авторSELECT * FROM tbl1 WHERE End < getdate() AND Date_Created IS NOT NULL ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 12:48 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  stomskystomskyЗначения в столбцах tbl1.Start и tbl1.End имеют какое-то значение в контексте данной задачи? Хотя нет, пожалуй имеют. Это скорее содержимое tbl2 не нужно в запросе. Предлагаю такой вариант (T-SQL): авторSELECT * FROM tbl1 WHERE End < getdate() AND Date_Created IS NOT NULL ДА, запрос почти верен, нужно обыграть только еще одно условие - Если Name есть и в текущем Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем.. Прошу прощение, что сложно излагаюсь. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 13:35 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  pr0b3l1987Если Name есть и в текущем  Start и End, и в прошлых, то их нужно отсечь, и оставить только тех, кто есть в прошлых, но нет в текущем.. Вот так? Код: sql 1. 2. 3. 4. 5. pr0b3l1987Прошу прощение, что сложно излагаюсь. Не сложно. Просто такое ощущение, что русский тебе не родной язык. Я минут по пять медитирую над твоим текстом. Не обижайся только ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 14:22 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Точнее так (без ""): Код: sql 1. 2. 3. 4. 5. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 14:23 | 
  
  
  
   | 
||
| 
 
Составление запроса. 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Да что такое?! )))) Вот так(без "[b]"): Код: sql 1. 2. 3. 4. 5. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 23.08.2017, 14:23 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=32&msg=39509354&tid=1540141]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    16ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    76ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    48ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 13ms | 
| total: | 185ms | 

| 0 / 0 | 
