[英]How to implement a search query across two tables?
我正在為我的網頁實現一個非常簡單的搜索功能。 有一個表名任務,該表有四個感興趣的列:名稱,描述,狀態(最后一個是具有三個可能選擇的多項選擇)和用戶名。
所以我這樣搜索:
SELECT * FROM tasks WHERE ((description LIKE '%search_val%' OR name LIKE '%search_val%') AND status='selected_status')
出於所有目的和目的,這都是可行的。 但是現在我意識到我希望用戶輸入的搜索模式(上面的語句在PHP代碼中執行)也能夠在另一個表的表名和姓氏中進行搜索:表用戶。 如果用戶名有一個任務(兩個表共有的字段),則也是查詢的結果。
可以這樣說,用戶在搜索框中輸入John。 我想顯示具有用戶名的任何任務,並且用戶的姓氏或名字都為John,並向我顯示描述或任務名中包含John的任何任務。
我將如何為此編寫查詢?
使用JOIN
連接users
表和tasks
表,並將兩個查詢與UNION
結合使用
SELECT *
FROM tasks
WHERE description LIKE '%search_val%' OR name LIKE '%search_val%'
UNION
SELECT t.*
FROM tasks AS t
JOIN users AS u ON t.username = u.username
WHERE u.name LIKE '%search_val%' OR u.lastname LIKE '%search_val%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.