사용자가 각 항목에 대한 의견을 제출할 수있는 주석 시스템을 만들었습니다.관련 리비전이있는 레코드를 쿼리하는 중
그것은 프로젝트/범위 크립 비트로 바뀌었고 이제 사용자가 원래 주석을 편집하고 해당 주석을 추적 할 수있는 기능을 구현해야합니다. 입력 (신규 또는 기존)
comment_id, revision_id, timestamp
모든 의견 :
모든 의견은 이제 수정 추적해야한다는
comments: id, comment, item_id, timestamp
, 나는 새 테이블 제목 개정을 만든 주석 테이블에 있습니다 주석 테이블에 사용자가 기존 주석을 수정하기로 결정하면 주석에 새 레코드로 입력 된 다음 개정 테이블에 기록됩니다. 새 메모가 주석 표에 입력되면 작성된 ID를 사용하여 revisions.reivison_id로 전달하고 revisions.comment_id에 사용자가 수정 한 원래 주석의 ID를 채 웁니다 (희망 사항 ' 너를 잃어 버림). 내가 추가 이제
select * from comments where item_id = 1
같은의 쿼리를했을 특정 항목에 대한 모든 코멘트 목록을 표시해야합니다
지금 내가 도움을 필요로하는 문제에 왔어요 리비전 테이블, 특정 항목에 대한 주석 목록을 검색해야하며 (위 쿼리와 동일), 주석을 수정 한 경우 해당 주석의 최신 버전을 반환해야합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
주석 테이블의 모든 주석을 검색하고, 배열에 저장하고, revisions.comment_id를 별개로 설정하는 개정 테이블 내의 모든 레코드를 반환하는 다른 쿼리를 실행하는 것에 대해 생각했습니다. 단지 전용 (일부 개정 대부분의 원이 각 주석의 최신 버전을 표시하는 가장 좋은 방법은 무엇이
select comment_id DISTINCT, revision_id, timestamp
from revisions order by timestamp desc
같은 최근 한
개정 쿼리 보일 수 있습니다 뭔가를 반환하려면 '티)?
나는 SQL 전문가가 아니므로 SQL을 사용하여 수행 할 수 있습니다. 또는 두 개의 다른 쿼리를 실행하고 별도의 배열에 데이터를 저장 한 다음 각 배열을 실행하고 해당 주석의 이전 버전을 비교 및 제거해야합니다 ? 단 하나 개의 쿼리를 실행하는 방법이 그렇다면, 당신은을 가장 좋은 방법 제공 할 수있는 코멘트의 가장 최근 버전의 목록을 반환이 있다면 내가 상상
foreach($revisions as $r):
$comments = strip key/value from comments array where $r['comment_id'] is
found in comments array
endforeach;
return $comments; // return the comments array after it was stripped of the older comments
아래의 예 (이론 부분) 그렇지 않으면 두 배열에 대한 두 개의 쿼리와 주석 배열의 값을 가장 좋은 방법 또는 더 나은 방법으로 스트립하는 것입니까?
미리 감사드립니다.
나는 옵션 1을 좋아합니다. 실제로는 약 8 개의 표가 있지만 두 개의 표를 예로 사용합니다. 그렇지 않으면 설명하려고 혼란스러워 할 것입니다. – Brad