2014-01-29 4 views
0

저는 SQL INSERT INTO와 매우 혼동합니다. JOIN을 입력해야합니까? 또는 INNER JOIN 다른 테이블에 넣을 때?다른 데이터베이스 테이블의 다른 필드에 삽입하십시오

이 코드는 하나의 테이블에서만 작동하지만 두 개는 작동하지 않는다는 것을 알고 있습니다. 그러나 내가 원하는 것은 $messagepost_message 다른 테이블에 있습니다.

forum_topic 테이블에서 post_id를, post_message, 날짜가 있고, 을 topic_id.

하지만 forum_post post_message$message을 데려 가고 싶다는 forum_post 테이블이있다.

그래서, forum_post 테이블에서 , post_message, 날짜을 POST_ID 및 을 topic_id있다.

그래서 JOIN 또는 INNER JOIN을해야합니까? 어느 코드를 코딩해야할지 모르겠습니다.

추신 : 나는 당신이 이해하기가 어렵다는 것을 알고 있습니다. 내가 어떻게 이미지를 넣을 수 있겠습니까? 그러나 나는 명성이 10 가지가 아니므로 이렇게하기로했습니다.

+0

나는 불가능 한 번에 하나의 insert 문에서 두 테이블에 데이터를 삽입 이번 주 질문이 수십 보았다. 왜 처음에는 mysql을 제대로 읽지 않고 질문을 던지십니까? – bring2dip

+0

불행히도 그곳에 의견을 올리려고했는데 거기에 대해 언급 할만한 평판은 없습니다. 그것은 어쨌든 광산과 다릅니다. – Anthosiast

답변

0

하나의 쿼리로 여러 테이블에 삽입 할 수는 없지만 트랜잭션을 사용하여 작업이 기본 적이라는 것을 확인할 수 있습니다.

BEGIN; 
Your queries here 
COMMIT; 

여러 개의 중간 쿼리를 실행해야 할 경우 일부 쿼리가 오류를 일으킬 수 있습니다. 따라서 데이터베이스의 일관성을 유지하기 위해 all-or-none으로 실행하고 싶습니다 (약 ACID을 읽을 수 있습니다). MySQL은 트랜잭션을 지원하지만 저장소 엔진 중 일부 (예 : InnoDB, MyISAM은 지원하지 않음) 만 지원합니다.

의사 코드는 다음과 같습니다.

start transaction 
try { 
    execute query 1 
    execute query 2 
    ... 
    commit transaction 
catch { 
    rollback transaction 
} 

PDO를 사용하는 경우에는 functions을보십시오. 는 mysql_query의 경우에, 당신은 당신이 사용하지 않는 mysql_query("START TRANSACTION"); mysql_query("COMMIT"); mysql_query("ROLLBACK");

+0

더 명확하게 설명 할 수 있습니까? 나는 네가하는 말을 아주 혼란 ​​스럽다. – Anthosiast

+0

내 대답을 업데이트했습니다 –

+0

감사합니다. 그 방법은 마술처럼 작동합니다! – Anthosiast

0

조인을 사용할 수 있습니다. 각 테이블에 대해 별도의 쿼리를 사용합니다.

insert into table1 
(field1, field2, etc) 
values 
(value1, value2, etc); 

insert into table2 
(field1, field2, etc) 
values 
(value1, value2, etc); 
+0

'$의 sqlinsert = "forum_topic (TOPIC_TITLE, thread_id) INTO INSERT VALUES ('$ 주제', '$ thread_id') forum_post (post_message) INTO \t INSERT \t VALUES ('$ 메시지')";'내가 그랬어 그리고 그것은 너무 잘 작동하지 않습니다. 중요한 점은 ** forum_topic **은 ** topic_id **와 같은 ** forum_post **에 연결되어 있다는 것입니다. 그걸 내가 어떻게해야합니까? – Anthosiast

+0

첫 번째 삽입물에서 생성 된 topic_id를 가져 와서 두 번째 삽입물에서 사용해야합니다. –

0

여러 테이블에 삽입하려면 여러 쿼리를 사용해야합니다.

예 :

$sqlinsert1 = "INSERT INTO forum_topic1 (topic_title1, topic_message1, thread_id1) 
VALUES 
('$topic1','$message1','$thread_id1')"; 

$sqlinsert2 = "INSERT INTO forum_topic2 (topic_title2, topic_message2, thread_id2) 
VALUES 
('$topic2','$message2','$thread_id2')"; 

쿼리를 선택하기 위해 사용된다하세요. 조인에 대한

예 :

$sqlselect = "SELECT * FROM forum_topic 
Join table2 on thread_id = table2id 
WHERE topic_title = $topic"; 
관련 문제