2011-05-09 7 views
0

나는 post 테이블과 reply 테이블을 가지고있다. 두 테이블 모두 created 컬럼이 있으며,이 컬럼은 작성 될 때이를 기록합니다. 및 post 표는 last_reply_created이며 해당 게시물 ID가있는 게시물에 대한 회신이있을 때마다 업데이트됩니다.복수 열로 mysql 주문

첫 번째 질문 : 게시물 페이지에서 게시판의 last_reply_created 또는 created이 먼저 오는 게시물을 모두 표시하고 싶습니다.

두 번째 질문 :이 문제와 관련하여 게시 및 답장 테이블을보다 잘 디자인 할 수 있습니까?

게시물을 작성할 때마다 last_reply_created을 삽입하는 것이 좋습니다.

답변

1

last_reply_created은 회신이있을 때까지 NULL이어야하며 회신 작성 시간은 항상 created보다 최신이어야합니다.

select * 
from your_table 
order by coalesce(last_reply_created, created) desc 

을 그리고 아마도 모든 행은 NULL이 아닌 created가있다 : 이것은 당신이이 같은 coalesce을 사용할 수 있습니다.

게시물 테이블에 last_reply_created 값을 캐싱하는 데는 아무런 문제가 없습니다. 당신이 그것을 많이 사용하려고한다면 그것은 반복해서 컴퓨팅을 계속하는 것이별로 의미가 없습니다.

+0

그 조언 주셔서 감사합니다, 나는 그 변화를 알아 차리지 못했습니다! 너의 것만으로도 내 대답을 죽였어. –

+0

@David : 나는 당신의 퍼레이드에 비를 내리는 것을 의미하지는 않았지만 항상 그 NULL을 주시해야한다. –