Страница: 1 |
Есть две таблицы Первая 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, и не попадают только те, которым щелбан вообще никогда не ставили.
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 Вместо: Tab2.SobDate BETWEEN #03/01/04# AND #03/31/04# Поставь: Tab2.SobDate Is Null SELECT ISTINCT 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. Всем спасибо за помощь. Страница: 1 |
Вопрос: Интересный вопрос знатокам SQL
Добавлено: 23.03.04 10:16
Автор вопроса: astoro | ICQ: 649109
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Gloom
Вопросов: 0
Ответов: 36
Профиль | | #1
Добавлено: 23.03.04 12:16
Номер ответа: 2
Автор ответа:
Legik
ICQ: 292375033
Вопросов: 3
Ответов: 72
Профиль | | #2
Добавлено: 23.03.04 12:23
Номер ответа: 3
Автор ответа:
ol2003
Вопросов: 3
Ответов: 122
Профиль | | #3
Добавлено: 23.03.04 19:42
Номер ответа: 4
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #4
Добавлено: 24.03.04 07:04