2010-01-20 5 views
0

나는 컬럼의 _id, title, details, listidSQL 데이터베이스 항목을 연결하는 방법?

_id의 메모가있는 SQLite 데이터베이스를 가지고있다.
은 자동 증가 기본 키
title이고 세부 정보는 문자열 데이터 필드
listid는리스트 이름을 가리키는 외래 키이다. 다른 테이블에.

여러 목록이나 노트에있는 노트를 업데이트하는 방법이 다른 방법으로 업데이트되거나 다른 방법으로 동시에 편집되는 방식으로 연결되는 방법을 찾고 싶습니다.

전체 목표는 동일한 메모를 여러 개의 목록에 복사하여 하나를 편집하고 나머지는 자동으로 업데이트하는 것입니다.

다른 링크를 추가하는 방법을 만드는 모든 링크 된 노트에 의해 공유 될 링크 ID 종류의 추가 열을 추가하는 생각했습니다.

답변

1

는 세 개의 테이블을 가지고.

메모를 편집 할 때마다 메모 테이블에서 메모를 편집하면됩니다.

당신이 당신이 ID를 가지고있는 목록의 내용을 나열 할 때마다, 당신은 같은 SELECT 뭔가 수행

SELECT title, details 
from NOTE 
where NOTE._id in (
    SELECT note_id from NOTES_IN_LIST 
    where list_id=<your list id> 
) 

또는

SELECT title, details 
from NOTE, NOTES_IN_LIST 
where 
    NOTE._id=NOTES_IN_LIST.note_id 
    and 
    NOTES_IN_LIST.list_id=<your list id> 

흠, 오래된 노트를 전송하기를 새로운 구조로, 나는 :

  • 새로 만들기 새로운 자동 증가 ID 필드와 ES 테이블은
  • 그 새 노트 테이블에 고유 한 (주 제목, 참고 정보)를 선택
  • 그 다음, OLD_TITLE = NEW_TITLE 및 old_detail = new_detail에서 새 노트 테이블에 기존 노트 테이블을 조인 새로운 노트 ID와 이전 목록 ID가 다음
  • 그때 난 당신이

것이 있는지 아무도는 편집이나 메모를 추가 확인 오래된 노트 테이블을 삭제할 수 있습니다 생각 NOTES_IN_LIST 테이블에 결과 테이블을 삽입하는 것이 선택이 동안 또는 메모를 잃게됩니다.

새 메모 테이블에서 작업하고 메모를 복사하지 않고 NOTES_IN_LIST에 삽입하여 UI를 업데이트해야합니다.

+0

유감스럽게도 노트 구조 당 하나의 목록을 가정하는 데이터베이스가 있으므로 구현하기가 어려울 수 있습니다. 연관 테이블 레이아웃을 변경하려는 경우 사용자의 데이터를 안전하게 보존 할 수 있는지 잘 모르겠습니다. – CodeFusionMobile

+0

이 형식과 일치하도록 SQL을 사용하여 기존 데이터베이스를 편집하려면 어떻게해야합니까? – CodeFusionMobile

+0

내 대답에 대한 일반적인 설명이 추가되었습니다. –

0

하나의 노트는 많은리스트를 가질 수 있습니다. 하나의리스트는 많은 노트를 가질 수 있습니다. , SQLite Foreign Key Support를 참조

당신은 외래 키 노트 ID와

+0

좀 더 설명해 주시겠습니까? – CodeFusionMobile

0

SQLite는 기본적 지원 3.6.19+ 목록 ID를 가지고 (및 적용) 연관 테이블이 필요합니다. 당신이 목록에 메모를 추가 할 때마다 그런 다음 '(들 list_id로) 목록에 (들 note_id 그 메모)'에 연결 NOTES_IN_LIST에 새 행을 추가

NOTE: _id, title, details 

LIST: _id, listname 

NOTES_IN_LIST: note_id, list_id 

:

+0

외래 키는 두 개 이상의 노트 연결을 지원하지 않습니다. – CodeFusionMobile

관련 문제