두개의 Query를 이용하여
첫번째 Query1의 결과를 Query2의 입력값으로 쓰고자합니다. 즉 Query1의 특정 필드를
사용하는것이 아니고 전체 결과를 Query2의 입력값(from 절 안으로)으로 하고자합니다.
예를 들면 아래 간단한 예제가 있습니다.
...
Query1.Open;
// Query1의 결과값 생성
with Query2 do begin
Clear;
SQL.Add('SELECT count(*) from Query1');
<----> 이부분
Open;
end;
while 또는 repeat문등을 사용하지 않고 바로 사용하고자 합니다.
물론 위 예에서 단순히 count만을 하려고 하는것은 아니고 다양한 작업을 위한것입니다.
답변을 부탁드립니다..^^
다만 Query1이 상황에 따라 Where조건이 변하는 것때문에 고민하시는 것같은데...
이렇게 해보시면 어떨까요!
with query1 do
begin
close;
sql.clear;
sql.add('SELECT FLD1, FLD2, FLD3 ');
sql.add(' FROM TABLE1 ');
if (조건1) then
sql.add(' WHERE FLD1 = ''' + edit1.text + ''' ') --> parameter를 쓰지 마시고...
else
sql.add(' WHERE FLD2 = ''' + edit2.text + ''' ');
open;
end;
with query2 do
begin
close;
sql.clear;
sql.add('SELECT COUNT(*), SUM(FLD3) ');
sql.add(' FROM (' + query1.sql.text + ') ');
... 기타 필요한 where
open;
end;
와 같이 표현하면 될 것 같은데... (아닌가여?)
중요한 것은 query1에서 대입변수를 :param1 처럼 쓰시면 않된다는 점이져..
:param1 대신 ''' + 필요한 값을 직접 + ''' ...처럼 쓰셔야 됩니다.
왜 ''' 가 필요하냐면 필요한 값을 상수로 쓸려고 하기 때문에 문자열은 앞과 뒤에 ' 가 필요하져.
오라클은 되는데 ...
다른 DB는 않서봐서리.....
짧은 지식에 도움이 될라나 몰것내여.
수고하세여.....................^_______________^