2014-12-05 2 views
0

한 테이블을 사용하여 다른 테이블에서 업데이트 및 조인하려고합니다. 내가 잘못 갈거야 -쿼리 두 테이블 업데이트

은 내가 카테고리 테이블 id 필드로 테이블 category 필드 (가장 최근의 삽입)을 업데이 트하려는

?

UPDATE book 
    JOIN category 
    SET book.category = category.id 
    WHERE id = $query->insert_id 

현재 데이터는 두 테이블에 개별적으로 전송되며 아무 것도 업데이트되지 않습니다. 한 행만 업데이트해야하는데, 나는이 실수를 일찍 만들어 모든 행을 업데이트했습니다!

나는 pho/mysql에 매우 익숙하므로 도움과 방향을 환영합니다.

UPDATE 내가 행을 업데이트 할 수 있어요 @Benni에서 제안에

덕분에, 그러나 그것은 가장 최근의 인서트하지만 내 DB의 첫 번째 행하지 업데이트합니다.

내 카테고리 테이블

id cat_name 
2 Childrens 
3 Science 
1 Maths 
23 Comedy 

내 책은 아래 표를 참조하십시오

id category title 
1 2   a title here 
2 2   a title here 
3 1   a title here 
4 Comedy  a title here 

ID 필드 모두 기본 키입니다.

업데이트를 실행하면 내 책 테이블이 2 = Childrens로 업데이트되고 23 = Comedy가 아닌 것처럼 업데이트됩니다.

내 당신은 당신의 가입의 ON 부분에 짜려고하고있다 INSERT

$query = $conn->prepare("INSERT INTO `book` (title,category,author,isbn,subtitle) VALUES (?,?,?,?,?)"); 
$query->bind_param('sssis',  
     $title, 
     $category, 
     $author, 
     $isbn, 
     $subtitle 
     ); 
$query->execute(); 
+0

아마 책을 넣을 카테고리의 ID를 알고있을 것입니다. 책을 만드는 데 사용하는'INSERT' 쿼리에 넣으십시오. – axiac

+0

더 많은 코드를 보여주세요. 마지막 INSERT가 무엇인지, 그리고 무엇을 달성하기를 원하는지는 명확하지 않습니다. – axiac

답변

1

귀하의 UPDATE 문은 다음과 같아야합니다. 먼저 JOIN ON 조건이 누락되어 있고 두 번째 추가 조건을 WHERE에서 JOIN ON 상태로 옮깁니다.

+0

몇 가지 샘플 데이터와 함께 책과 카테고리 모두에 대한 테이블 구조를 공유 할 수 있습니까? 답변에 게시 된 코드는 잘 작동합니다. 'some_common_column'은 테이블을 연결하거나 결합 할 수있는 테이블 사이의 공통 컬럼입니다. 두 테이블 모두 그들 사이에 어떤 관계가 있습니까? – Rahul

-1

마지막. 이 시도 : (JOIN 구문)

UPDATE book, category 
SET book.category = category.id 
WHERE book.id = $query->insert_id 

또는를 :

UPDATE book 
JOIN category 
ON book.id = $query->insert_id 
SET book.category = category.id 
+0

왜 downvote? – Benvorth

+0

잘 모르겠다. 이 작동하지만, 내 테이블의 모든 행을 업데이 트! 가장 최근 행만 업데이트하려고했습니다. –

+0

어떤 열로 "가장 최근 행"을 식별합니까? – Benvorth