2012-02-24 66 views
0

我有3个表:NamesToDoTasksDone。他们柱结构如下:三表差异查询

'Names' table: 
    Name (nvarchar) 
    Status (nvarchar) 

'ToDo' table: 
    Task (nvarchar) 
    Date (smalldatetime) 
    Name (nvarchar) 

'TasksDone' table: 
    TaskStatus (nvarchar) 
    Date (smalldatetime) 
    Name (nvarchar) 
'Names' table: 
Name | Status 
John | Available 
Ryan | Available 
Sean | NotAvailable 

'ToDo' table: 
Task  | Date  | Name 
Washing | 01.01.2012 | John 
Cleaning | 03.01.2012 | Ryan 
Washing | 04.01.2012 | Sean 

'TasksDone' table: 
TaskStatus| Date  | Name 
Done  | 01.01.2012 | John 
Done  | 02.01.2012 | Ryan 
NotDone | 02.01.2012 | Sean 

我想所有的NameNamesStatus='Available'未在指定天(日期)ToDoTasksDone表中找到。

+0

你尝试'join'? – 2012-02-24 14:18:32

+2

这是功课? – 2012-02-24 14:19:25

+0

作出努力和尝试,让我们了解您到目前为止试过了,这是你可以学习的唯一途径 – dansasu11 2012-02-24 14:20:06

回答

1

试试这个(YOUR_DATE是您的日期,必须更换)

SELECT 
    n.Name 
FROM Names n 
LEFT OUTER JOIN ToDo t 
    ON t.Name = n.Name 
    AND t.Date = YOUR_DATE 
LEFT OUTER JOIN TasksDone td 
    ON td.Name = n.Name 
    AND td.Date = YOUR_DATE 
WHERE 
    n.Status = 'Available' 
    AND t.Name IS NULL 
    AND td.Name IS NULL 
+0

谢谢你,傻傻的(不是真的)!这正是我想要的! – milo2011 2012-02-24 14:35:32