2010-06-11 3 views
0

다음과 같은 상황이 있습니다 (축소 된 예). 두 개의 테이블, Measures1Measures2. 각 테이블에는 ID, 중량 (그램) 및 선택적으로 유체 체적의 볼륨이 저장됩니다. Measures2두 테이블의 계산 된 데이터를 다시 한 테이블에 병합

+----+----------+--------+ 
| ID | Weight | Volume | 
+----+----------+--------+ 
| 1 | 100.0000 | NULL | 
| 2 | 200.0000 | NULL | 
| 3 | 150.0000 | NULL | 
| 4 | 325.0000 | NULL | 
+----+----------+--------+ 

내용 :

+----+----------+----------+ 
| ID | Weight | Volume | 
+----+----------+----------+ 
| 1 | 75.0000 | 10.0000 | 
| 2 | 400.0000 | 64.0000 | 
| 3 | 100.0000 | 22.0000 | 
| 4 | 500.0000 | 100.0000 | 
+----+----------+----------+ 

이 표는 동등한 무게와 볼륨을 설명 Measures1

내용 (실제로, Measures1 여기에 관련이 다른 데이터의 좋은 거래를 가지고) 물질의 예 : 물질 1의 체액 1 온스는 75 그램입니다. ID는 관련되어 있습니다. Measures1의 ID 1은 Measures2의 ID 1과 동일한 물질입니다. 내가 원하는 무엇

Measures2의 정보를 사용하지만, Measures1에서 가중치를 (이 중복되므로 다음, 궁극적으로 내가는 Measures2 테이블을 삭제할 수 있습니다) 유지 Measures1NULL 볼륨을 작성합니다. 단순화를 위해 Measures1의 모든 볼륨이 NULL이고 Measures2의 모든 볼륨이 0이라고 가정합니다.

나는 다음과 같은 쿼리를 기입 할 볼륨 계산할 수 있습니다 :

SELECT Measures1.ID, Measures1.Weight, 
     (Measures2.Volume * (Measures1.Weight/Measures2.Weight)) 
     AS DesiredVolume 
FROM Measures1 JOIN Measures2 ON Measures1.ID = Measures2.ID; 

가 생산 :

+----+----------+-----------------+ 
| ID | Weight | DesiredVolume | 
+----+----------+-----------------+ 
| 4 | 325.0000 | 65.000000000000 | 
| 3 | 150.0000 | 33.000000000000 | 
| 2 | 200.0000 | 32.000000000000 | 
| 1 | 100.0000 | 13.333333333333 | 
+----+----------+-----------------+ 

을하지만 실제로으로이 계산 된 값을 삽입하는 방법에 대한 손실입니다 Measures1 테이블

Measures1에 모든 ID를 반복하는 스크립트 또는 저장 프로 시저를 작성하는 대신 단일 쿼리로 수행 할 수있는 것이 좋습니다. 그러나 그때조차도 나는 MySQL 문서에서 UPDATE 쿼리와 SELECT 하위 쿼리를 동시에 사용할 수 없다고 말했기 때문에 가능하지 않을까 걱정됩니다. 모든 솔루션에서이를 수행해야한다고 생각합니다.

위의 쿼리의 결과가있는 새 테이블을 만든 다음 (Measures1의 다른 비 볼륨 필드도 모두 선택) 두 테이블을 모두 삭제하고 새로 생성 된 테이블로 Measures1을 바꾸는 것이 한 가지 해결 방법이라는 것을 알고 있습니다. 테이블,하지만 나는 그것을 놓칠 수있는 더 좋은 방법이 있는지 궁금 해서요.

답변

0
UPDATE Measures1 
SET Volume = (Measures2.Volume * (Measures1.Weight/Measures2.Weight)) 
FROM Measures1 JOIN Measures2 
ON Measures1.ID = Measures2.ID; 
관련 문제