2010-03-22 147 views
0

我正在尝试开发一些只能提取最新信息的代码。T SQL WHERE子句

当用户进入一个表单有一个子表时,每次他们改变它在柱上创建一个名为type12_OriginalNoteID的新行时,它将自己的唯一编号放入其中。另一个名为type12_OriginalNoteID的字段保持相同的编号 - 这是在做出任何更改之前都会记录原始数字的内容。 我确实有一些代码可以提取最新的信息,但如果用户没有对表单做任何更改,它就不会提取任何内容 - 这是因为type12_OriginalNoteID为空。

的代码如下: -

WHERE ea.type12_NoteID IN 
    (SELECT TOP 1 ea.type12_NoteID 
    FROM UserAssessv1aidsadaptations ea1 
    WHERE ea.type12_NoteID = ea1.type12_OriginalNoteID 
    ORDER BY ea.type12_UpdatedDate DESC) 

的数据的一个例子如下: -

type12_note ID   12 
type12_OriginalNoteID NULL 
type12_UpdatedDate  11/03/2010 

将是解决办法是什么,以显示信息,如果没有人已经作出的任何对子表的更改? - 如果type12_OriginalNoteID为空,则添加if语句以运行?

回答

1

你需要什么,是加入两个表使用LEFT JOIN。所以来自主表的记录数据将仍然存在,但来自第二个表(=子表)的字段将是null。你的陈述应该是这样的:

SELECT TOP 1 t1.type12_NoteID 
FROM t1 LEFT JOIN t2 
ON t1.type12_NoteID = t2.type12_OriginalNoteID 
ORDER BY t1.type12_UpdatedDate DESC