Q&A

  • select를 두번 할려고 하는데요..
먼저..

SELECT Price_Date FROM Tb_PricePlan
where Price_Date Like :Price_Date Group By Price_Date

이 쿼리를 먼저 돌려서요..날짜를 구한다음..
날짜에 부합하는 데이터를..

SELECT A.PriceCode,A.Gubun_Code, A.Price, A.Price_Date, B.Code_Name
From Tb_PricePlan A, Tb_PriceCode B
where A.PriceCode=B.PriceCode and Price_Date like :Price_Date
Order by by a.Gubun_CodeOrder by a.Price_Date

이 쿼리를 돌려서 구하려고 하거든요..
이중으로 돌리려면 어케 해야 하나요?
잘 모르겠어요~
알려주세요~~^o^
그럼 이만~(__)
5  COMMENTS
  • Profile
    머슴 2002.12.04 18:09

      먼저  첫번째 쿼리가  항상 유일값을 가지는지가 가장 궁금합니다.

      만약에 1개 이상의 결과가 나온다면..코딩으로 두번 돌리는 것

      보다는 두 쿼리를 합치시는 것이 좋을 것 같습니다.

      (이 경우가 아니드라도 쿼리를 합치시는 것이 좋을것 같습니다)

    1개 이상이 나올 경우에는 그 결과를 OR절 이나 다른 방법으로

    결합을 해야 하는데   이 경우는 쿼리 수행속도에 별로 안좋을 것 같습니다.
      
    오라클의 예제는 아래와 같습니다.( DB가 오라클이 아닌 경우에는 수정을

    하셔야 할 수도 있습니다.)

    select a.pricecode,a.gubun_code, a.price, a.price_date, b.code_name
    from tb_priceplan a, tb_pricecode b
    where a.pricecode=b.pricecode and price_date in (select price_date from tb_priceplan
    where price_date like :price_date group by price_date )
    order by a.gubun_codeorder by a.price_date


  • Profile
    샤리 2002.12.04 19:04
    답변 보고..이렇게 했는데요..

            SQL.Add('SELECT A.PriceCode,A.Gubun_Code, A.Price, A.Price_Date, B.Code_Name');
            SQL.Add('From Tb_PricePlan A, Tb_PriceCode B');
            SQL.Add('where A.PriceCode=B.PriceCode and Price_Date in (');
            SQL.Add(' ''SELECT Price_Date FROM Tb_PricePlan'' ');
            SQL.Add(' ''where Price_Date Like :Price_Date Group By Price_Date)'' ');
            SQL.Add(' ''Order by a.Gubun_Code, a.Price_Date'' ');

    이렇게 하는거 맞나요?
    select 문에 안에 또 select 에 또  '' 이걸 해줘야 하니까..
    잘 몰겠어요..
    그냥 쿼리분석기에선 제대로 나오는데 프로그램에선 안나오네요..
          
    SQL.Add(' ''where Price_Date Like :Price_Date Group By Price_Date)'' ');
    이줄에서 에러가 나더라구요..
    Incorrect Syntax Near 라고요..

    알려주세요~
  • Profile
    머슴 2002.12.04 19:29
       select 에 또  '' 이걸 안해주셔도 상관없습니다..

      with query1 do
        begin
        Close;
        SQL.clear;
        SQL.Add('SELECT A.PriceCode,A.Gubun_Code,
                         A.Price,A.Price_Date, .Code_Name');
        SQL.Add('From Tb_PricePlan A, Tb_PriceCode B');
        SQL.Add('where A.PriceCode=B.PriceCode and Price_Date in (');
        SQL.Add(' SELECT Price_Date FROM Tb_PricePlan ');
        SQL.Add(' where Price_Date Like :Price_Date Group By Price_Date) ');
        SQL.Add(' Order by a.Gubun_Code, a.Price_Date ');
        SQL.SaveToFile('c:a.txt');
        end;
  • Profile
    김종균 2002.12.04 11:02
    질문에 맞는 답변인지는 모르겠지만...
    하나의 셀렉트의 값을 이용해서 다른 셀렉트에서 사용하려면...
    저같은 경우 가장 쉽게 하는건... 변수를 하나 선언하구
    그변수에 값을 할당 하구 다시 두 번째 쿼리를 돌립니다....

    아니면,, 서브쿼리를 이용하세요...


  • Profile
    사발우성 2002.12.04 18:28

    SELECT A.PriceCode,A.Gubun_Code, A.Price, A.Price_Date, B.Code_Name
    From Tb_PricePlan A, Tb_PriceCode B
    where A.PriceCode=B.PriceCode and Price_Date  in (
    SELECT Price_Date FROM Tb_PricePlan
    where Price_Date Like :Price_Date Group By Price_Date)
    Order by by a.Gubun_CodeOrder by a.Price_Date

    그럼 즐프하시길 ^^;;