나는 정말 적절한 select 문을 작성하는 방법에 집착하고 제공 할 수있는 모든 지침을 고맙게 생각합니다.일대 다 관계 쿼리
사용자가 파일을 업로드하고 범주별로 파일을 분류 할 수있는 미니 문서 관리 시스템을 만들었습니다. 각 파일에는 하나 이상의 카테고리가 선택 될 수 있습니다.
표 : 파일 (PKEY (기본 키), FILE_NAME, file_description, FILE_PATH)
pKey file_name file_description file_path
1 IT001.DOC Network Design Document /common/it/
2 IT002.DOC Desktop Standards /common/it/
3 IT003.DOC Laptop Standards /common/it/
는 IT에서뿐만 아니라 다른 부서가 있습니다 그래서 경로 필드도 변경 (다음은 내 테이블입니다 (PKEY (기본 키), category_description)
0,123,516 카테고리 : 그냥 내가)에표를 자료의 비트를 던져 줄 알았는데 물론 다른 카테고리 이것은 단지 샘플링을하고, 거기에도
pKey category_description 1 Central Missouri Campus 2 Eastern Missouri Campus 3 Western Missouri Campus 4 Desktops 5 Laptops 6 Networks 7 Printers
있다
테이블 : category_xref (PKEY (기본 키) fk_file_id, fk_category_id)
pKey fk_file_id fk_category_id
1 1 1
2 1 2
3 1 6
4 2 2
5 2 3
6 2 4
7 3 1
8 3 2
9 3 3
10 3 5
사용자가 관련 문서를 검색하면 카테고리 체크 박스가있는 양식이 표시됩니다. Central을 선택하면 Central로 표시된 모든 파일을 가져옵니다. 데스크톱을 선택하면 데스크톱으로 표시된 모든 문서를받습니다. 그러나 Central AND Desktop을 선택하면 Central or Desktop 중 하나 인 문서를 가져옵니다. 중앙 AND 데스크탑과 선택한 다른 모든 체크 상자 만있는 문서를 가져 오는 방법을 알아 내고 선택된 모든 확인란을 포함하지 않는 문서는 제외하십시오.
SELECT f.pkID, f.file_name, f.file_description, f.file_path, cox.fk_category_id
FROM files f
JOIN category_xref cox ON cox.fk_file_id = f.pkID
WHERE cox.fk_category_id IN (59, 69)
ORDER BY f.file_name ASC, cox.fk_category_id ASC
이 많은 것에 아니다 ...이 많은 많은 수 있습니다 :). "파일에는 N 개의 범주가 있으며 범주 내에는 N 개의 파일이 있습니다."NxN – pleasedontbelong