반응형
ex )
select
위의 query 문의 설명을 하자면
pm.pm_books_list 에 저장된 값이 "1,2,3,4" 와 같은 문자열로 되어있다
join 되는 books 테이블의 key 인 b_no 값들을 pm_books_list 에 저장된 값과 비교하는것이다.
b_no 값을 ",키값," 형태로 바꾸고 비교대상인 pm_books_list 값도 ",값," 형태로 바꿔 결국 ",값," 과 ",값," 값을 비교 하도록 한것이다.
성능면에선 다소 떨어지겠지만 부득이하게 이와 같은 형태로 저장될경우 join 하는 방법을 찾아 보았다.
위의 문장을 다시 설명하면 특정 과정에 속한 여러 교재가 있는대 그 교재 목록을 하나의 필드에 "," 로 구분하여 저장을 하고 해당 교재 정보를 조인하여 가지고 오는것이다.
하나의 필드와 여러 row 를 조인하는것이다.
select
SQL_CALC_FOUND_ROWS
pm.*,
count(b.b_no) as cnt
from
product_month pm
left outer join books b
on concat(',',pm.pm_books_list,',' ) like
concat('%,',b.b_no,',%' )
where
pm.p_id = 1
group by pm.p_id, pm.pm_no
order by
order by
pm.pm_no asc
위의 query 문의 설명을 하자면
pm.pm_books_list 에 저장된 값이 "1,2,3,4" 와 같은 문자열로 되어있다
join 되는 books 테이블의 key 인 b_no 값들을 pm_books_list 에 저장된 값과 비교하는것이다.
b_no 값을 ",키값," 형태로 바꾸고 비교대상인 pm_books_list 값도 ",값," 형태로 바꿔 결국 ",값," 과 ",값," 값을 비교 하도록 한것이다.
성능면에선 다소 떨어지겠지만 부득이하게 이와 같은 형태로 저장될경우 join 하는 방법을 찾아 보았다.
위의 문장을 다시 설명하면 특정 과정에 속한 여러 교재가 있는대 그 교재 목록을 하나의 필드에 "," 로 구분하여 저장을 하고 해당 교재 정보를 조인하여 가지고 오는것이다.
하나의 필드와 여러 row 를 조인하는것이다.
반응형
'Story > mysql' 카테고리의 다른 글
디비내용을 csv 로 저장하기 (0) | 2011.04.04 |
---|---|
주민등록 번호로 나이,나이대 구하기 (0) | 2011.03.18 |
select시 순서에대한 값을 구하고자 할경우 ranking (0) | 2009.01.19 |
group by having 을 이용하여 그룹별 최대,최소 하나씩 가져 올수있는 방법 (0) | 2009.01.19 |
MySQL 데이터베이스 최적화, MySQL 성능을 200%로 1 : MySQL 모니터링과 서버 튜닝 (0) | 2009.01.19 |