我正在爲一家公司定製在線管理應用程序,用戶可以在其中管理客戶端,產品,組件,提供商等。現在我正在使用搜索表單,用戶可以使用關鍵字和各種選項搜索客戶。現在,對於關鍵字搜索,我知道如何使用MySQL FullText,問題更多地與額外的搜索選項有關。MySQL選擇沒有關聯條目的條目(在另一個表中)
所以基本上,每個客戶端可以分配到一個或多個類別。客戶也可能不會被分配到任何類別。要做到這一點,我用三個表:
- 「客戶」表,其中包含了客戶端,如姓名,聯繫方式等。每個客戶的基本信息都有一個唯一的ID
- 「類別」表,其中只有ID,標題和說明字段
- 「categories_assign」表,它只有兩個字段,「clientId」和「categoryId」。它允許我將多個類別分配給客戶端。
現在,在搜索表單中,用戶可以選擇要搜索的類別;可以一次選擇多個類別以及一個「無」值,該值應該搜索沒有類別的客戶。沒有任何類別的客戶基本上在「categories_assign」表中沒有任何條目。
這是我的問題:我沒有問題,尋找分配給特定類別的客戶,但我不能找到一種方法來搜索客戶端,而類..
下面是一個簡化版本(爲了提高可讀性)的查詢,根據所選類別選擇客戶:
SELECT * FROM clients c, categories_assign a WHERE c.id = a.clientId AND a.categoryId IN(1,7,43,52)
所以如你所料,分配給類別ID 1,7,43或52這樣做此選擇的客戶端工作正常。但是,正如我之前所說,我無法找到一種方法來選擇沒有類別的客戶,即。在「categories_assign」表中沒有任何條目的客戶端。我希望能夠同時選擇特定類別。 (例如,搜索類別ID 1,7,43,52和沒有類別的客戶端)。我嘗試使用連接,但沒有運氣。
我能想到的唯一解決方法是在「categories_dis」表中創建一個條目,將「categoryId」設置爲0,意思是「無類別」,所以我只需要搜索「categoryId」0。如果可能的話,我想避免這樣做的需要。
有沒有人有任何線索?
在此先感謝!
請提供樣本數據和期望的輸出。 – RedFilter 2012-07-13 16:58:27