다음과 같은 상황이 있습니다 (축소 된 예). 두 개의 테이블, Measures1
및 Measures2
. 각 테이블에는 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
테이블을 삭제할 수 있습니다) 유지 Measures1
에 NULL
볼륨을 작성합니다. 단순화를 위해 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
을 바꾸는 것이 한 가지 해결 방법이라는 것을 알고 있습니다. 테이블,하지만 나는 그것을 놓칠 수있는 더 좋은 방법이 있는지 궁금 해서요.