TABLE : A
------------------------
no: 고유번호
subj: 제목
cont: 본문
------------------------
TABLE : B
------------------------
uid: 고유번호
rel: 테이블 A 글의 고유번호(관련번호)
memo: 덧글
------------------------
위와 같이 2개의 테이블이 있습니다.
게시판은 아니지만, 게시판 형태라고 보시면 됩니다.
과제: A의 본문(cont) 또는 B의 덧글(memo)에 특정 단어가 포함되었는지 검색하여 결과를출력하는 1개의 mySQL query를 작성하라.
예: 'AS'라는 단어 검색시
① A의 본문(cont)에 'AS'가 있거나 '또는'
② B의 덧글에 'AS'가 있다면
③ A의 uid, subj 를 출력하도록
하면 됩니다.
####################################
#
# 문제는
# 덧글이 있는 게시물도, 없는 게시물도 있습니다.
# JOIN의 방법을 쓰니, 덧글이 없는 경우는 출력하지 않더군요.
# JOIN은 반드시 B 테이블에도 해당 덧글 데이터가 최소 1개 이상 있어야 하는 것 같네요.
#
####################################
오랜 시간 자료를 찾아보고 고민하다
가장 최선의 결과를 낸 것이 아래의 쿼리입니다.
SELECT no FROM A WHERE cont LIKE '%AS%'
UNION
SELECT rel FROM B WHERE memo LIKE '%AS%';
이렇게 하면
A 테이블의 본문, B테이블의 덧글에 'AS'가 포함된 A테이블의 고유번호 목록을 얻을 수 있습니다.
(목록'만' 얻을 수 있다는 게 또 문제입니다.)
검색결과가 이렇게 나왔으면 좋겠습니다.
no| subj
2 | 동해물과 (A 테이블 본문에 AS가 포함됨)
5 | 백두산이 (B 테이블 메모에 AS가 포함됨)
9 | 하느님이 (A 테이블의 본문에도 B 테이블의 메모에도 AS가 포함됨)
.
.
.
이런 저런 책을 뒤지다 보니
"왼쪽과 오른쪽 결과를 모두 가져오는 조인이
모든 데이터베이스에 있는 것은 아니지만 있고,
완전 외부 조인이라고 합니다. 하지만 MySQL, SQL Server, Access에는 없습니다."
라고 써 있어
MySQL로는 하나의 쿼리로 정말 불가능한지 알고 싶어
질문 올립니다. |