A table
-----------------------------------
City Size Weight WeightedSize
-----------------------------------
안성시 0.5
화성군 0.2
평택시 0.2
-----------------------------------
B table
-----------------------------------
City Name Size
-----------------------------------
안성시 A 1,000
안성시 B 2,000
안성시 C 1,500
화성군 D 1,500
화성군 E 1,800
평택시 F 3,000
평택시 G 2,100
평택시 H 1,200
-----------------------------------
A와 B 테이블이 위와 같이 있습니다.
B 테이블의 같은 도시에 사는 사람의 Size를 합쳐서 A table의 size에 입력하려고 합니다.
즉, A 테이블의 안성시의 size는 B 테이블에서 안성시에 해당하는 size의 합인 4,500입니다.
이를 위해서 SQL문을 다음과 같이 작성했습니다.
Query1.Sql.Add('update A.db set size= ' );
Query1.Sql.Add('(select sum(size) from B.db where city like "안성%") ');
Query1.Sql.Add('where city like "안성%"');
그런데,
나머지 City에 대해서도 반복해서 위와 같이 사용하자니 코드량이 많아질 것 같고 비효율적인 것 같아서 이렇게 도움을 청합니다.
고수님들의 많은 도움 부탁합니다.
> A table
> -----------------------------------
> City Size Weight WeightedSize
> -----------------------------------
> 안성시 0.5
> 화성군 0.2
> 평택시 0.2
> -----------------------------------
>
> B table
> -----------------------------------
> City Name Size
> -----------------------------------
> 안성시 A 1,000
> 안성시 B 2,000
> 안성시 C 1,500
> 화성군 D 1,500
> 화성군 E 1,800
> 평택시 F 3,000
> 평택시 G 2,100
> 평택시 H 1,200
> -----------------------------------
>
> A와 B 테이블이 위와 같이 있습니다.
> B 테이블의 같은 도시에 사는 사람의 Size를 합쳐서 A table의 size에 입력하려고 합니다.
> 즉, A 테이블의 안성시의 size는 B 테이블에서 안성시에 해당하는 size의 합인 4,500입니다.
> 이를 위해서 SQL문을 다음과 같이 작성했습니다.
>
> Query1.Sql.Add('update A.db set size= ' );
> Query1.Sql.Add('(select sum(size) from B.db where city like "안성%") ');
> Query1.Sql.Add('where city like "안성%"');
>
> 그런데,
> 나머지 City에 대해서도 반복해서 위와 같이 사용하자니 코드량이 많아질 것 같고 비효율적인 것 같아서 이렇게 도움을 청합니다.
> 고수님들의 많은 도움 부탁합니다.
>
>
>
-----------------------------------------------
테스트를 않해서 맞는지 모르겠지만 이렇게 해보세요
update a set a.size = (select sum(b.size) from b
b.city = c.city )
where city in (select disticnt c.city
from b c)
사용하시는 db 에 따라 처리결과가 다를수 있습니다.
^^ 제임스딘이었습니다.