Question

J'ai deux tables.

BoardPosts
BoardPostId INT PK
ModifiedOn DATETIME NULLABLE

BoardComments
BoardCommentId INT PK
BoardPostId INT
CreatedOn DATETIME

Un poste du conseil d'administration a zéro à de nombreux commentaires.

Je souhaite définir le champ à la ModifiedOn date la plus récente de commentaire, si le conseil d'administration a un commentaire. Sinon, laissez simplement nulle.

Comment puis-je faire cela, en utilisant Tsql?

quelque chose comme ...

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

???

Était-ce utile?

La solution

Je pense que cela fonctionnera ...

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

Autres conseils

J'ai décidé de prendre en compte à la fois les messages et commentaires décommente:

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

Hope this helps!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top