2013-06-28 1 views
0

아래의 쿼리를 사용하여 고객 세부 정보를 얻습니다. 하지만 제발 저를 도와주세요. 나는 SQL에 대해 새삼 스럽다. 당신은 WHERE 절에 사용되는 하위 쿼리에서 열을 선택할 수 없습니다기본 쿼리에서 하위 쿼리 가져 오기

select cu.fld_cust_id,ord.* from test1 where fld_order_id ord in (select * from tbl_customer cu where cu.fld_status=1); 
+0

정확하게 원하는 것을 지정할 수 있습니까? –

답변

1
  1. , 그들은이 쿼리에 가입하지 않은 becaused. 이 하위 쿼리에서 반환 된 값 범위를 사용하고 있습니다.

  2. 하위 쿼리는 여기에 하나의 열만 반환해야합니다.

  3. 다음과 같이 시도해야합니다.

    SELECT cu.fld_cust_id, ORD. * TEST1 FROM는 cu.fld_status ON tbl_customer 세제곱 가입 = 1 AND fld_order_id = cu.fld_cust_id 당신은 또한 당신이 할 수있는 것을 인식 할 필요가 쿼리에서

+0

fld_order_id = cu.fld_cust_id는 적합하지 않으며 ord도 마찬가지 * * –

+0

맞습니다. 그러나 실제로 테이블이 어떻게 생겼는지는 알 수 없습니다. –

0

현재 범위의 필드 만 볼 수 있습니다. 따라서 메인 쿼리에서는 FROM TEST1 만 사용하므로 해당 테이블의 필드 만 볼 수 있습니다. ord *와 cu를 사용하면 오류가 발생합니다. 해당 테이블의 다른 필드가 필요하면 JOIN을 사용하십시오. TEST1 테이블에는 TBL_CUSTOMER에 연결된 외래 키가 있어야합니다. 그렇지 않으면 다른 다른 테이블을 사용하거나 데이터베이스를 다시 디자인해야합니다.

select fld_cust_id from test1 where fld_cust_id in (select id from tbl_customer cu where cu.fld_status=1); 
0

가 확실하지 귀하의 tbl_customer 무엇, 그러나 당신이 fld_order_id에 * 일치하는 것 같다 : 당신이 외래 키가있는 경우, 즉, IN 연산자 주위에 무엇을 사용합니다. 고객 테이블의 order_id와 일치해야합니다.

select cu.fld_cust_id,ord.* 
from test1 
where fld_order_id ord in (
    select *ORDERID* from tbl_customer cu where cu.fld_status=1 
); 
관련 문제