2013-02-13 33 views
6

我正在使用JDBC進行通配符搜索。如何使用通配符從多個表中搜索值?

當我使用單個表時,代碼工作正常。

當我嘗試使用通配符搜索組合多個表時,代碼不起作用。

例如,用戶可以搜索任何關鍵字。

  1. 如果「板球」用戶搜索,板球關鍵字是在運動表
  2. 如果用戶搜索availble的爲「Windows 8的」,它是在軟件表中可用
  3. 如果用戶搜索「谷歌,雅虎」,關鍵字在網站目錄

這裏是動態輸入值可供選擇:

where s1(cricket,windows 8,google) 

在單表搜索我期待已久的體育臺「板球」。

這裏是我的查詢,工作正常:

"select * from sports WHERE feed LIKE '%" +s1 + "%'"; 

我多表查詢不起作用。

"select * from product WHERE sitename LIKE '%"+s1+"%'" "OR 

    "select * from sports  WHERE sitename LIKE '%"+s1+"%'" " OR 

    "select * from website WHERE sitename LIKE '%"+s1+"%'" " OR 

    "select * from software WHERE sitename LIKE '%"+s1+"%'" "OR 

    "select * from other WHERE sitename LIKE '%"+s1+"%'" 

這段代碼有什麼問題?

+0

在你的單一查詢中,你會說哪裏飼料喜歡和在你的多點sitename喜歡? – Lyrion 2013-02-13 07:58:56

回答

2

嘗試用UNION而不是OR連接您的單個語句。有了這個,你可以用相同的列連接幾個SQL查詢和表。例如:

"select * from product WHERE sitename LIKE '%"+s1+"%' UNION 

select * from sports WHERE sitename LIKE '%"+s1+"%' UNION 

select * from website WHERE sitename LIKE '%"+s1+"%' UNION 

select * from software WHERE sitename LIKE '%"+s1+"%' UNION 

select * from other WHERE sitename LIKE '%"+s1+"%'" ; 

但請注意!您的單個表必須具有相同的列/列數,否則將無法使用!
也許更好的例子來闡明:

"select sitename, description from product WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from sports WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from website WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, description from software WHERE sitename LIKE '%"+s1+"%' UNION 

select sitename, text as description from other WHERE sitename LIKE '%"+s1+"%'" ; 

正如你可以聲明6中看到的,您可以通過重命名他們參考其他列的結果,但是列數必須是相同的。

希望這可以幫助你!