我有多个包含客户数据的表(来自客户名称,客户联系人姓名,客户服务项目等)。
我需要在表格中启用对这些多列的搜索。然后我必须使用搜索结果来提取客户信息(我需要客户ID或客户名称)。
这样做的最佳方式是什么?
可能的解决方案:
感谢。
答案 0 :(得分:0)
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
我确实认为这类似于Oracle Text Search等,它在Oracle应用程序中用于允许更智能的搜索,“google-likish”。
所以这是一个要创建的全文索引。
使用内部联接(或者更糟糕的是,复制临时表中的内容)可能工作但代码将很复杂,您可能会扼杀性能。
答案 1 :(得分:0)
如果客户坚持要进行类似的搜索,那么你可以做的唯一事情就是创建一个TEXT列,FULLTEXT将其编入索引,并将要搜索的所有列连接到此列。如果你这样做,我建议你用这种形式写你的查询,以保证正确的匹配,同时保持一个有意义的排序:
select *
from sometable
where match(search_column) against('$search_terms' in boolean mode)
order
by match(search_column) against('$search_terms')
答案 2 :(得分:0)
尝试类似:
SELECT
c.*
FROM CustomerTable c
INNER JOIN (SELECT
CustomerID
FROM Table1
WHERE columnA =filter1
UNION
SELECT
CustomerID
FROM Table2
WHERE columnB =filter2
UNION
SELECT
CustomerID
FROM Table3
WHERE columnC =filter3
) dt ON c.CustomerID=dt.CustomerID