Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Интересный вопрос знатокам SQL Добавлено: 23.03.04 10:16  

Автор вопроса:  astoro | ICQ: 649109 

Есть две таблицы

Первая Tab1 содержит два поля

IDChel - ID Человека

ChelName - Имя человека

Вторая Tab2 тоже содержит два поля

IDChelFromTab1 - ID человека из первой таблицы

SobDate - Дата какого-либо события (например, человеку дают зарплату, или щелбан, возможно не один раз в месяц)

Для Выборки людей, которым в допустим в марте щелбаны уже ставили строка SQL такая:

SELECT DISTINCT Tab1.ChelName, Tab2.SobDate FROM Tab1, Tab2 WHERE Tab1.IDChel=Tab2.IDChelFromTab1 AND Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04#

Вопрос следующий: как сделать выборку людей, которым щелбан в марте не ставили вовсе???

Если поставить перед BETWEEN слово NOT, то в выборку попадают люди, которым щелбан ставили раньше, т.к. они удовлетворяют условию NOT BETWEEN по более ранним записям талицы Tab2, и не попадают только те, которым щелбан вообще никогда не ставили.

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Gloom



Вопросов: 0
Ответов: 36
 Профиль | | #1 Добавлено: 23.03.04 12:16

SELECT DISTINCT Tab1.ChelName, Tab2.SobDate FROM Tab1 left join Tab2 on Tab1.IDChel=Tab2.IDChelFromTab1 WHERE  Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04# or Tab2.IDChelFromTab1 is null

Ответить

Номер ответа: 2
Автор ответа:
 Legik



ICQ: 292375033 

Вопросов: 3
Ответов: 72
 Профиль | | #2 Добавлено: 23.03.04 12:23

Вместо: Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04#

Поставь: Tab2.SobDate Is Null

Ответить

Номер ответа: 3
Автор ответа:
 ol2003



Вопросов: 3
Ответов: 122
 Профиль | | #3 Добавлено: 23.03.04 19:42

SELECT ;DISTINCT Tab1.ChelName FROM Tab1WHERE Tab1.IDChel not in (SELECT Tab2.IDChel FromTab2 WHERE Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04#)

Tak poluchish teh, kto ne imel schelbanov. Inache:

SELECT Tab1.ChelName, Tab2.SobDate FROM Tab1 LEFT OUTER JOIN Tab2 ON Tab1.IDChel=Tab2.IDChel WHERE Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04#

Vse gde Tab2.SobDate is null - neoschelbaneny.

 

Ответить

Номер ответа: 4
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #4 Добавлено: 24.03.04 07:04

Всем спасибо за помощь.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам