2012-12-27 2 views
0

이 완료이 쿼리이 기록은 표 1에 존재오라클은

select * 
from table1 a 
join table2_n n 
on a.PHONE_NO like '%'|| (select substr(mobile_no,2,9) as mobile_no from table2) 

테이블에 대해 저를 도와주십시오 다른 테이블에서 등을 선택합니다. 그래서 나는이 쿼리에서 그들 모두를 얻을 필요가있다.

+0

select *를 사용하지 마십시오! – hd1

+0

왜 찾을 수 없는지 설명해 주시겠습니까?'select * from table1 a join table2_n n on a PHONE_NO '%'|| substr (n.mobile_no, 2,9)'? – Ben

답변

2

방금 ​​직접 데이터에 가입 할 수 있습니다, 하위 쿼리가 필요하지 않습니다

select * 
from table1 a 
where exists (select null 
       from table2 n 
       where a.PHONE_NO like '%'|| substr(mobile_no,2,9)); 

이있는 경우 :이이 exists 하위 쿼리를 사용하여 쓸 수있다, 또는

select a.* 
from table1 a 
join table2 n 
on  a.PHONE_NO like '%'|| substr(mobile_no,2,9); 

을 table2의 여러 레코드가 table1의 레코드와 일치하면 첫 번째 쿼리는 distinct 절을 입력하지 않으면 t1에서 여러 행을 반환합니다.

+1

예, 논평 한대로 이것이 OP가하려고하는 것 같지만 완전히 확신 할 수는 없습니다 ... 분명하지 않습니다. – Ben

1

이것은 정규화 된 디자인이 아니다. 데이터는 두 테이블에 속하지 않습니다. 차라리 어떻게 할 지 제안하기 전에 다시 생각해 보라고 권하고 싶습니다. 그것은 잘못된 것입니다.

1

phone_no 열이있는 2 개의 테이블을 결합한 방법과 같은 하위 쿼리를 사용해야하는 이유는 무엇입니까? 그러면 일치하는 모든 레코드가 반환됩니다.

+2

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – valex

+0

@valex : 저자에게 비평이 아니라고 생각합니다. 대신 "이 쿼리를 완료하는 데 도움을주십시오."라는 완벽한 법적 대답입니다. – Ralph

+0

어떻게하면 @ralph 비평이 될 수 없습니까? 질문이없고 아무것도없는 성명서입니다. OP_how_를 표시하여 쿼리를 개선해야합니다. – Ben

-1

rownum = 1 또는 where 조건을 사용하면 내부 하위 쿼리에서 하나의 행만 반환되고, 그렇지 않으면 table2의 여러 recods에 대해 작동하지 않습니다.

+0

이것은 JOIN의 포인트를 무효로하는 임의의 레코드 만 반환합니다. – Ben