Как скрыть дату и идентификатор из таблицы - PullRequest
1 голос
/ 16 декабря 2009

Использование SQL Server 2005

Я хочу скрыть дату от table1, где table1.id = table2.id и table1.date = table2.date

Table1

ID Date

001 01-01-2009
001 02-02-2009
001 03-01-2009
001 04-01-2009
002 01-01-2009
002 02-02-2009
002 03-01-2009

...

Table2

ID Date Holiday

001 01-02-2009 0
001 02-02-2009 1
001 03-01-2009 0
001 04-01-2009 0
002 01-01-2009 1
002 02-02-2009 1
002 03-01-2009 0

..

Запрос

SELECT ID, Date  
FROM table 
WHERE date NOT IN (SELECT date FROM table2 WHERE holiday = 1) 
  AND id NOT IN (SELECT id FROM table2 WHERE holiday = 1)

Приведенный выше запрос ничего не показывает.

Как сделать запрос для этого условия?

Нужна справка по SQL Query

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Ваши идентификаторы не очень уникальны и, по сути, скрывают все.

Например ...

Таблица 1

001 03-01-2009 - это не праздник ...

Таблица 2

001 02-02-2009 1 - это выходной, но с идентификатором «001» - тот же идентификатор, что и запись в таблице 1, которая не является выходной!

Вы уверены, что хотите отфильтровать по идентификатору - наверняка будет работать только дата:

SELECT
    ID,
    Date
FROM
    table 
WHERE
 date not in (select date from table2 where holiday = 1)
1 голос
/ 16 декабря 2009

Вы можете сделать что-то вроде этого:

SELECT ID,Date From Table1
WHERE convert(VARCHAR,date)+'~'+convert(VARCHAR,id) NOT IN 
    (SELECT convert(VARCHAR,date)+'~'+convert(VARCHAR,id) FROM table2
     WHERE Holiday=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...