2012-02-01 2 views
0

나는 오늘 프로그래밍 논스톱에서 약간의 braindead입니다, 그리고 그것은 쉽게 보일 수 있지만 내 뇌는이 시점에 있지 않습니다.카테고리와 관련된 항목을 쿼리하는 방법은 무엇입니까?

나는 레코드 테이블을 가지고 있습니다. 각 레코드는 하나 이상의 범주에 속합니다. 범주 및 레코드는 record_id 및 category_id 열이있는 중간 테이블로 조인됩니다.

내가 원하는 것은 현재 레코드와 동일한 범주에 속하는 레코드를 쿼리하는 것입니다. 나는 어떻게 그것에 대해 갈 것인가?

감사합니다.

답변

1

연관 테이블을 'record_category'라고 가정합니다. 이미 '현재 레코드'에 대한 카테고리 ID가 목록에 있습니다.

select r.* from records r join record_category rc on rc.record_id=r.record_id where rc.category_id in(?category_ids) 

현재 레코드 ID가 모두있는 경우 그러면 더 완전한 쿼리가됩니다 :

select r.* from record r join record_category rc on rc.record_id=r.record_id where rc.category_id in(select rc.category_id from record_category rc where record_id=?) group by r.record_id 

바꾸시겠습니까? id의 실제 값과 비교하거나 준비된 명령문에서 사용하십시오 (언어에 따라 다름).

+0

무엇이 (? category_ids) ...은 mysql 구조입니까? category_ids를 여기 또는 변수 이름으로 사용할 수 있습니까? – GeekedOut

+0

category_ids는 쿼리에 전달할 카테고리 ID의 목록입니다. 완전하게 구성된 쿼리의 인스턴스는 다음과 같습니다. select r. * from records r rc record_category rc on rc.record_id = r.record_id 여기서 rc.category_id in (1, 2, 4, 6) – ggreiner

관련 문제