我正在为一家公司制作一个定制的在线管理应用程序,用户可以在其中管理客户、产品、组件、提供商等。现在我正在制作一个搜索表单,用户可以在其中使用关键字和各种选项搜索客户。现在,对于关键字搜索,我知道如何使用 MySQL FullText,问题更多与额外的搜索选项有关。
所以基本上,每个客户都可以分配到一个或多个类别。客户也可能不会被分配到任何类别。为此,我使用了三个表:
- “clients”表,保存着客户的基本信息,如姓名、联系方式等。每个客户都有一个唯一的ID
- "categories" 表,它只包含 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_assign”表中创建一个条目,其中“categoryId”设置为0,意思是“无类别”,所以我只需要搜索“categoryId”0。我想避免这样做的需要,如果可能的话。
有人有任何线索吗?
提前致谢!