Q&A

  • [긴급]update 문 좀 가르쳐주세요.
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에 대해서도 반복해서 위와 같이 사용하자니 코드량이 많아질 것 같고 비효율적인 것 같아서 이렇게 도움을 청합니다.

고수님들의 많은 도움 부탁합니다.







2  COMMENTS
  • Profile
    제임스딘 1999.08.11 02:37
    한근수 께서 말씀하시기를...

    > 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 에 따라 처리결과가 다를수 있습니다.



    ^^ 제임스딘이었습니다.

  • Profile
    제임스딘 1999.08.11 02:42
    제임스딘 께서 말씀하시기를...

    > 한근수 께서 말씀하시기를...

    > > 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 에 따라 처리결과가 다를수 있습니다.

    >

    > ^^ 제임스딘이었습니다.

    -------------------------------------------------

    앗! disticnt ---> distinct 수정 ^^