2013-10-23 2 views
0

MySQL을 사용하고 있고 문서와 사용자 간의 연결/링크를 저장하려는 테이블 (documentShips)이 있습니다.msql은 다른 두 테이블의 값을 기반으로 테이블에 데이터를 삽입합니다.

  • 사용자 테이블
  • 문서 테이블 열 누구나 열은 쉼표로 구분 된 값을 포함
    • 일예 ID 및 사용자를 포함하고있다 ... ID, FIRST_NAME과 LAST_NAME 등을 포함한 열이 "조 Bloggs에, 프레드 Nerk, 시몬 미 McCool"등 ...
나는 테이블 (문서 및 사용자)은 같은 문을 사용하여, 예를 들어 사이에 사용자를 일치시킬

:

where documents.authors like '% users.last_name %' 

그리고 예를 들어, documentShips 테이블에 삽입 : 나는 유효한 (MySQL의)를 만드는이 작업을 수행하기 위해 문을 삽입하기 위해 고군분투

insert into documentShips (user_id, document_id) ... values() ... where ... 

.

모든 도움을 주시면 대단히 감사하겠습니다.

감사합니다. Jon.

+0

syntex는 documentShips (id, ..)로 삽입합니다. @id .. where where condition. 당신이 가치를 사용하고 있다면 나는 당신이 where 절을 사용할 수 있다고 생각하지 않는다. – AJP

답변

0

난 당신이 여기에이

INSERT INTO documentShips (user_id, document_id) 
SELECT u.id, d.id 
    FROM documents d JOIN users u 
    ON FIND_IN_SET(CONCAT(u.first_name, ' ', u.last_name), d.authors) > 0 
ORDER BY d.id, u.id 

같은 FIND_IN_SET()을 사용할 수 있습니다 제대로 이해하면 SQLFiddle 데모

당신이 가지고 쉼표 document.authors 값을 분리 있는지 확인해야 제대로 작동하기 위해서는 쉼표 앞뒤에 공백이 없어야합니다. 당신이 가진 사실에 공백 다음이

UPDATE documents 
    SET authors = REPLACE(REPLACE(authors, ' ,', ','), ', ', ','); 

같은 쿼리를 먼저 제거하는 경우 여기에 당신의 documents 테이블을 정상화에 SQLFiddle 데모

지금 생각입니다.

0

MySQL 설명서에 표시된대로 INSERT...SELECT 구문을 사용하십시오. 문서에는 몇 가지 예가 있습니다.

+0

[이 질문에 대한 답변 (http://stackoverflow.com/questions/15523597) – trf

관련 문제