쿼리 질문이요 0 9 3,301

by 이광영 [MySQL] 쿼리 select [2013.05.15 12:58:43]


DB초짜다보니 막히는게 한두가지가 아니네요.

A라는 테이블에는 문장들이 들어있습니다.

ID |  문장

------------------------------

1  |  희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.

2 | 우연이 아닌 선택이 운명을 결정한다

3  |  그대의 하루하루를 그대의 마지막 날이라고 생각하라.


B라는 테이블에는 검색 키워드가 있습니다.

키워드

-------------------------------

희망

운명

우연


이렇게 구성되어 있다고 할 때 B 테이블에 존재하는 모든 키워드로 A 테이블의 문장을 조회해서


희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.

우연이 아닌 선택이 운명을 결정한다.


이렇게 결과가 나오게끔 하려고 합니다.

한 문장안에 두개 이상의 키워드가 들어있어도 문장은 한번만 나와야 하구요.

그래서 아래와 같이 select 했는데 서브쿼리가 하나 이상 리턴한다고 에러가 발생합니다.


select ID, 문장

from TABLE_A

where 문장 LIKE (select 키워드 from TABLE_B);

by 부쉬맨 [2013.05.15 13:03:25]
instr 함수를 사용하여서 존재하는지 여부를 확인

by 이광영 [2013.05.15 15:51:50]
답변 감사합니다^^ 많이 배웠습니다.

by 채용근 [2013.05.15 13:05:54]

SELECT distinct a.*
  FROM a, b
 WHERE regexp_count ( a.cont, b.keyword ) > 0

by 이광영 [2013.05.15 15:51:15]
답변 감사합니다^^ 많이 배웠습니다.

by 손님 [2013.05.15 13:09:46]
select ID, 문장
from TABLE_A A
where exists (
select 1
from TABLE_B
where instr(A.문장,키워드) > 0
and rownum = 1);

by 이광영 [2013.05.15 15:51:39]
답변 감사합니다^^ 많이 배웠습니다.

by 허승호 [2013.05.15 13:12:35]
 
WITH A AS(
SELECT 1 AS ID ,'희망은 볼 수 없는 것을 보고, 만져질 수 없는 것을 느끼고, 불가능한 것을 이룬다.' AS CONTEXT FROM DUAL UNION ALL
SELECT 2 ,'우연이 아닌 선택이 운명을 결정한다' AS CONTEXT FROM DUAL UNION ALL
SELECT 3 ,'그대의 하루하루를 그대의 마지막 날이라고 생각하라.' AS CONTEXT FROM DUAL
)
,B AS(
SELECT '희망' WORD FROM DUAL UNION ALL
SELECT '우연' FROM DUAL UNION ALL
SELECT '운명' FROM DUAL
)
SELECT * FROM A 
 WHERE ID IN (SELECT DISTINCT (SELECT ID FROM A WHERE REGEXP_LIKE(A.CONTEXT , B.WORD )) AS ID FROM B)

by 이광영 [2013.05.15 15:51:44]
답변 감사합니다^^ 많이 배웠습니다.

by 손님 [2013.05.16 11:08:02]

흠...GROUP BY 에 HAVING 해서 하셔두 되고 쉽게 하실려면

SELECT * FROM A,B WHERE A.문장 LIKE B.키워드 || '%'
일케하면 되겟네여 ㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입