2009-05-11 14 views
0

Ich habe zwei Tabellen.Wie aktualisiere ich dieses Feld in meiner SQL-Datenbank?

BoardPosts 
BoardPostId INT PK 
ModifiedOn DATETIME NULLABLE 

BoardComments 
BoardCommentId INT PK 
BoardPostId INT 
CreatedOn DATETIME 

Ein Brett Post hat null zu viele Kommentare.

Ich wünsche das ModifiedOn Feld setzen: das letzte Kommentar Datum zu sein, wenn der Vorstand einen Kommentar hat. Ansonsten lass es einfach null.

Wie kann ich das tun, Tsql mit?

so etwas wie ...

UPDATE BoardPosts 
SET ModifiedOn = CreatedOn 
SELECT TOP(1) CreatedOn 
FROM BoardPosts a INNER JOIN BoardComments b ON a.BoardPostId = b.BoardPostId 

???

Antwort

2

Ich denke, das funktioniert ...

UPDATE BoardPosts 
SET ModifiedOn = (SELECT MAX(CreatedOn) 
        FROM BoardComments 
        WHERE BoardComments.BoardPostId = BoardPosts.BoardPostId) 
0

ich beschlossen, berücksichtigen beide kommentiert und unkommentiert Beiträge:

update p1 set ModifiedOn = (
select 
    max(case when c.CreatedOn is null then p.CreatedOn 
    else c.CreatedOn end) as ModDate 
from 
    boardposts p 
    left outer join BoardComments c on 
     p.BoardPostId = c.BoardPostId 
where 
    p.BoardPostId = p1.BoardPostId 
group by p.BoardPostId 
) 
from 
    BoardPosts p1 

hoffe, das hilft!

Verwandte Themen