2013-05-08 51 views
0
我在與 Manager細節的表具有以下字段

如何做到過濾器在SQL

Name, ID 

和子表Appoinments它包含以下字段,

Manager ID , Date, Appoinment Details. 

現在我需要從Maneger表中得到Maneger的細節,那些今天沒有任命的人。

我是新來的SQl。請幫我寫出查詢

+0

你正在使用什麼[RDBMS](http://en.wikipedia.org/wiki/Relational_database_management_system)? 'RDBMS'代表*關係數據庫管理系統*。 'RDBMS是SQL'的基礎,並且適用於所有現代數據庫系統,如MS SQL Server,IBM DB2,Oracle,MySQL等...... – 2013-05-08 06:40:55

+0

MS SQL Server ..... – 2013-05-08 06:43:54

回答

3

注意我假定你正在使用SQL Server。

select m.* 
    from manager m 
where not exists (select * 
        from appointments a 
        where m.id = a.manager_id 
         and a.date >= datediff(d,0,getdate()) 
         and a.date < datediff(d,-1,getdate())); 

注:
DATEDIFF(d,0,GETDATE())=今天
DATEDIFF(d,-1,GETDATE())=明天

+0

如何使用連接執行此操作? – 2013-05-08 06:41:13

+0

不知道你爲什麼想要用更優雅的存在語法可以工作的連接來做到這一點,但你可以通過@ RichardTheKiwi的回答並在約會中測試null來將聯合管理器留在過濾器的約會中 – 2013-05-08 06:56:50

1
select * from manager m 
where not exists 
(
    select 1 
    from appointments a 
    where a.manager = m.manager 
    and a.date = today (whatever today in your SQL is) 
) 
0

其他的答案是正確的,這是一個連接版本:

SELECT M.Name, M.ID 
FROM manager M LEFT JOIN appointments A ON M.id = A.manager_id 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, A.date)) != DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) 
GROUP BY M.Name, M.ID;