在我的网站上,用户输入多个搜索字词。这些搜索词中的每一个都可以返回0行,或者返回几行。我在所有搜索上执行UNION并获取行。
如果我能在响应中获得所有搜索词,那么对我来说容易得多,无论他们是否返回任何行。有没有办法将字符串LEFT JOIN(在本例中为搜索项)连接到SELECT查询?
更多信息更新:
我有一个表格带有标题的书籍。
用户最多输入10个标题search_terms,我目前在所有这些上执行UNION以获得匹配的行。所以它就像
SELECT $s[0] AS Search_Term,* WHERE Title LIKE '%$s[0]%' UNION
SELECT $s[1] AS Search_Term,* WHERE Title LIKE '%$s[1]%' ...etc
我希望如果给定搜索没有结果,我仍然会将Search_Term与NULL标题一起返回。
答案 0 :(得分:4)
我认为这就是他想要的:
- 结果 -
Search Term____Title________________________________Author______Call No
cats How to Care for Millions of Cats JohnB B.342
kittens Why Kittens are your only Friends Old Lady L.4239
rabies null null null
etc.
也许是这样的:
SELECT
CASE count
count > 0
'Search Term', books.title 'Title', books.author 'Author', books.call_no 'Call No'
count <= 0
'Search term 1'
END CASE
FROM
(SELECT COUNT('Search term 1') count, 'Search term 1' 'Search Term' ,*
FROM books
WHERE books.title LIKE 'Search term 1');
(你必须解决问题)
答案 1 :(得分:1)
如果将数组值连接在一起,可以这种方式使用全文搜索(FTS):
SELECT x.searchterm,
b.*
FROM (SELECT $s[0 ... 20] AS search_term) x
LEFT JOIN BOOKS b ON MATCHES(b.title) AGAINST (x.searchterm)
$s[0 ... 20]
是一个占位符,用于将搜索词连接成一个字符串,用空格字符分隔每个词。
如果没有匹配项,LEFT JOIN将确保您获得搜索项和其余列的NULL。
答案 2 :(得分:0)
加入条件就像WHERE条件一样工作,你可以使用“LIKE”或“=”加入你选择的条件。如果您需要更多细节,我需要一些查询示例和表定义。