개발 Q&A

제목 mysql 다중선택 쿼리문에 관해 조언부탁드립니다.
글쓴이 아플바 작성시각 2016/04/26 15:22:08
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 12941   RSS
id news_id cate_id
1 1 1
2 1 2
3 2 2
4 2 3
5 2 4
6 3 1
7 3 2

 

위와 같이 테이블이 존재한다고 할때 

cate_id 값이 1과 2인 news_id 1, 3 을 불러오고 싶은데요

쿼리문을 어떻게 짜면 좋을지 조언 부탁드립니다.

 

select     

     news_id,     

     group_concat(t.cate_id) as cates 

from t_news as t 

where t.cate_id in (1,2) 

group by news_id

having length(cates) >= 2 + 1 

 

위와 같이 쿼리문을 짜면 뽑아올수는 있는데 웬지 더 쉬운 방법이 있을듯한데..

분류 같은것을 다중선택을 할때 테이블을 어떻게 구성하는게 좋은가요? 

 

 다음글 익스플로러에서 다운로드 오류 (5)
 이전글 웹 개발에 관한 질문 (5)

댓글

한대승(불의회상) / 2016/04/26 21:30:47 / 추천 0
원하는 결과가 정화히 어떤건가요?
아플바 / 2016/04/27 09:34:50 / 추천 0

cate_id 값   1과 2를 모두 포함한  news_id  목록을 얻을려고 해요.  

위에 테이블로 말하면  news_id 값 1 하고 3 을 포함한 목록이에요.

cate_id 값  2 하나로 검색할 때면  cate_id 값 2를 포함한 news_id 목록  1, 2, 3 이구요

 

FOKKIA / 2016/04/27 09:43:41 / 추천 0
정확하게 테이블인가요 컬럼인가요? 
FOKKIA / 2016/04/27 09:51:44 / 추천 0
쿼리문 보니 컬럼이네요. DB 정규화가 가능한 상태라면 정규화를 추천드립니다. 
아플바 / 2016/04/27 10:49:48 / 추천 0

 

얻으려고 하는것 

 

아플바 / 2016/04/27 10:52:50 / 추천 0
예를 들어  한개 뉴스가 [생활 cae_id: 1] 이라는 카테고리에도 포함되고 [문화 cae_id: 2] 라는 카테고리에도 포함되는 그런 구조를 구현하려고 합니다.   이런 구조는 테이블을 어떻게 구성하면 좋은가요 ?
변종원(웅파) / 2016/04/27 11:33:40 / 추천 0

아무리 봐도 말씀해주신 사항만으로 정규화가 힘든데요... ㅎㅎ

뉴스의 번호가 1번이라면  1 - 1번 카테고리, 1 - 2번 카테고리 형태로 넣으면 됩니다. 이미 그런 구조인데 어떤걸 더 하고 싶으신건지....

지금 올리신 쿼리는 뉴스 기준이 아니라 카테고리 기준으로 뽑는거죠.

FOKKIA / 2016/04/27 13:24:22 / 추천 0

보이는 구조만으로는 다른 대안이 없습니다. news_id 가 유니크한 값으로 지정되어 있는 테이블이 있다면 news_category 라는 테이블을 만들어 외래키로 연결하신 후 JOIN하시는 방법 정도 있겠네요.