2016-06-03 1 views
0

현재 세 개의 테이블 사이/업데이트하세요 :이 일을하고 테이블 1과 표 2 I의 조건에 따라 표 3에서 업데이트 된 데이터를 얻을 수

Update Table_B as T1 
Inner Join Table_A as T2 
On T1.S_ID=T2.ID 
Set T1.Percent = T2.Percent 

Update Table_C as T1 
Inner Join Table_B as T2 
On T1.ID=T2.J_ID 
Set T1.B = T2.B 
Where T2.Percent=100 
내가 업데이트 TableB의 TableA의 비율로 어떻게 든 저장하거나하지 싶습니다

단일 명령문에서 조인을 수행하십시오.

답변

0
update table_b T1 set T1.Percent=(select T2.Percent from table_a T2 where T1.S_ID=T2.ID) 

update table_c T1 set T1.B=(select T2.B from table_b T2 where T1.ID=T2.J_ID) where exists(select * from table_b T3 where T1.ID=T3.J_ID and T3.percent=100) 
+0

@Will Hi Will은 오늘이나 내일 그렇게하려고 시도하며 복잡하고 간단한 예제 테이블을 만들어 간단하게 설명하려고합니다 .... – user3649739

0

이 UPDATE 문

Set T1.Percent as T1.Percent 
       ^^ 

에 올바른 구문되지 않고이

Set T1.B as T2.B 
     ^^ 

질문에 UPDATE 문에서 구문이 유효 보이지 않는 유효하지 않습니다 .

SET 지정 연산자는 As 키워드가 아닌 등호입니다.

T1.Percent = T1.Percent은 현재 값으로 열을 설정하는 데 아무런 문제가 없으므로별로 의미가 없습니다.

예제 데이터와 원하는 최종 결과없이 실제로 달성하려는 내용이 확실하지 않습니다.


것은 멀티 테이블 UPDATE 문을 작성하려면, 내가 먼저 컬럼의 현재 값과 함께, 기본 (또는 고유) I 업데이트려고하고 테이블의 키를 반환하는 SELECT 명령문을 작성 업데이트, 당신은 두 개의 조인 할 수 있습니다처럼 문제가되는 SQL을 기반으로 열

에 할당하려고하는 새로운 값을 반환 표현, 그것은이 같은 보인다 수 :

SELECT ... 
    FROM table_a a 
    JOIN table_b b 
    ON b.s_id = a.id 
    JOIN table_c c 
    ON c.id = b.j_id 
    WHERE a.percent = 100 
    ORDER BY ... 

(Google은 일대일, 일 대 다, 일대일, 일대일 등 어떤 것이 든 상관 없습니다. 우리는 단지 추측입니다.)

쿼리를 평가하고 테스트하려면 테이블의 기본 키가 포함됩니다. id이 (불행하게도) Table_A와 Table_C의 기본 키라고 추측 할 것입니다. 튜플 (j_id,s_id)Table_B의 고유 키입니다.

업데이트 할 열 (현재 값 표시)과 열에 할당 할 새 값을 반환하는 식도 포함합니다. 이 같은

뭔가 :

SELECT a.id   AS `a__id` 
     , a.percent AS `a__percent` 
     , b.j_id  AS `b__j_id` 
     , b.s_id  AS `b__s_id` 
     , c.id   AS `c__id` 
     , c.b   AS `c__b_old` 
     , b.b   AS `c__b_new` 
    FROM table_a a 
    JOIN table_b b 
    ON b.s_id = a.id 
    JOIN table_c c 
    ON c.id = b.j_id 
    WHERE a.percent = 100 
    ORDER 
    BY c.id 
     , a.id 

내가 그것을 테스트하고 그것이 내가 업데이트 할, 그리고 값이 c__b_new 표현 반환 된 Table_C에서 행을 반환되고 있는지 만들 것 내가 원하는 값이다 Table_Cb 열에 할당하십시오.

일단 올바르게 작동하는 SELECT 문을 얻으면 (올바르게 작동하면 만 해당) 나는 다중 테이블 업데이트로 변환합니다.

SELECT ... FROM 부분을 키워드 UPDATE으로 바꿉니다.

그리고 WHERE 절 앞에 새 값을 지정하는 SET 절을 추가하십시오. (나는 새 값을 반환하는 SELECT 목록에 사용 된 것과 같은 표현을 사용합니다.) 나는 멀티 테이블 UPDATE 작성에 대한 이동 방법의 단지 예입니다

UPDATE table_a a 
    JOIN table_b b 
    ON b.s_id = a.id 
    JOIN table_c c 
    ON c.id = b.j_id 
    SET c.b = b.b 
    WHERE a.percent = 100 

. 보장이 없음이 진술은 귀하가 필요로하는 것에 효과가있을 것입니다. 다시 말하지만, 당신이 달성하고자하는 것이 명확하지 않습니다; 명세가 너무 모호하다. 그래서 우리는 단지 추측하고 있습니다.

+0

원래 쿼리 예제를 신속하게 게시 한 것에 대해 죄송합니다. 올바른 쿼리 ('a = b' 대'a를 b '로 설정하고'set t1 = t2' 및 set t1 = t1 ' 나머지는 지금 감사하겠습니다! – user3649739