我真的被困在如何創建適當的選擇語句,並會感謝您可以提供任何指導。一對多關係查詢
我創建了一個迷你文檔管理系統,允許用戶上傳文件並按類別對這些文件進行分類。每個文件可以選擇一個或多個類別。以下是我的表:
表:文件(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)
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和Desktops又有他們選擇的其他複選框的文檔,並排除那些不包含所有選中複選框的文檔。
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