table2의 행의 값들과 table3의 열값들을 table1의 행으로...insert 하려고 합니다...
***table3의 구조
field1 field2 field3 field4
111 01 5000 151
111 02 0 151
111 03 1100 151
111 04 0 151
111 05 0 151
***table2의 구조
field1 field2 field3 field4 field5
111 aaa 888-999 151 44444
table2의 한 field에 연관된 값들이... table1에 5줄씩 있습니다...
이데이타들을 table1에 넣으려고 하는데여
table2의 값들을 넣는건 문제가 되지 않습니다...
한행을 넣어 주는거니까여...
근데 table3의 열들을 table1의 행에 넣어 주려고 합니다...
예를 들어
*********table1에 insert시킬 값들...
field1 field2 (table2.field2 = 01)
table2의 field1(111) table3.field3의 첫번째 값(5000)
field3 (table2.field2 = 02) field4 (table2.field2 = 03)
table3.field3의 두번째 값(0) table3.field3의 세번째 값(1100)
field5 (table2.field2 = 04) field6 (table2.field2 = 05)
table3.field3의 네번째 값(0) table3.field3의 다섯번째 값(0)
field7
table2.field3(888-999)
이렇게여... 어떻해 넣어 줘야 하져???
table3의 값들을 모두 select해서 가져와설랑은..
그 값들을 필요한것만 배열등에 넣어 줄수 있나여??
넣을 수 있다면 어떻게 어떤 방법들이 있나여??
ㅡㅡ; 도와주세염~ 고수님들~~~~~~~
어떤 DB를 쓰시는지 몰라 MS-SQL 로 했습니다
ORACLE 쓰신다면
LEFT OUTER JOIN TABLE3 B
ON ((A.FIELD1 = B.FIELD1)
AND (B.FIELD2 = '01'))
저 문장 대신에
WHERE A.FIELD1 *= B.FIELD1
AND B.FIELD2 = '01'
이렇게 하시면 되구요..
담부턴 DB를 써주시는게 예의일듯...
SELECT A.FIELD1
,A.FIELD3
,B.FIELD3
,C.FIELD3
,D.FIELD3
,E.FIELD3
,F.FIELD3
FROM TABLE2 A
LEFT OUTER JOIN TABLE3 B
ON ((A.FIELD1 = B.FIELD1)
AND (B.FIELD2 = '01'))
LEFT OUTER JOIN TABLE3 C
ON ((A.FIELD1 = C.FIELD1)
AND (C.FIELD2 = '01'))
LEFT OUTER JOIN TABLE3 D
ON ((A.FIELD1 = D.FIELD1)
AND (D.FIELD2 = '01'))
LEFT OUTER JOIN TABLE3 E
ON ((A.FIELD1 = E.FIELD1)
AND (E.FIELD2 = '01'))
LEFT OUTER JOIN TABLE3 F
ON ((A.FIELD1 = F.FIELD1)
AND (F.FIELD2 = '01'))
WHERE A.FIELD1 = '111'
2. 루핑을 돌린다면.. 더 편할것 같은데요?
var
iCnt : Integer;
sQuery : String;
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add( 'SELECT FIELD2, FIELD3 FROM TABLE3' );
SQL.Add( ' WHERE FIELD1 = ''111'' ' );
이렇게 가져온값을..
Open;
First;
ICnt := 1;
while not EOF do
begin
if iCnt = FieldByName( 'field2' ).AsInteger then
begin
sQuery := sQuery + 'field' + IntToStr( iCnt + 1) + ' = ' + '''' + FieldByName( 'Field2' ).AsString + '''';
end;
if not EOF then
begin
sQuery := sQuery + ',';
Inc( iCnt );
end;
Next;
end;
//=====삽입 쿼리.
with Query1 do
begin
Close;
SQL.Add( 'insert into table1 ( 'field1', ...... );
SQL.Add( sQuery );
.....
ExecSQL;
end;
end;