[英]How can a run a query on one table based on the results of a query on another table?
我不確定在遇到以下情況時正常加入對我有幫助:
我有兩個表作為應用程序的一部分,我的建築:一個只是列出了一個username
在第一列和friend's username
在第二列 。 該表嚴格用於跟蹤用戶以及與之成為朋友的用戶。
第二個表有4列,分別是username
, last name
, first name
和password
。 該表嚴格用於跟蹤注冊用戶的登錄名和個人信息。
我想在第一個表上運行查詢,以查找已登錄用戶的所有朋友,這些朋友包含通過JavaScript傳遞給URL的搜索詞,我已經完成了:
SELECT friend FROM friends WHERE user='$user' AND friend
LIKE '%" . $term . "%'" //$user == $_SESSION['user']
這將從包含搜索詞$ term的“ friends”表中返回已登錄用戶的朋友的用戶名列表。
接下來,我想運行一個查詢,該查詢返回與first name
一個查詢匹配的所有用戶(已登錄用戶的朋友)並且其名字或姓氏包含相同搜索詞$ term的所有用戶的first name
, last name
和username
,通過javascript傳遞到url。 該查詢必須在“用戶”表上,因為只有它包含名字和姓氏。
我只是不確定如何聯接表並以僅針對用戶朋友獲得此信息的方式運行查詢。
SELECT users.firstname, users.lastname, users.username
FROM friends JOIN users ON friends.friend = users.username
WHERE friends.user = '$user'
AND friends.friend LIKE '%$term%';
在這種情況下,您可能可以使用IN。
SELECT firstname, lastname, username from tablename WHERE username IN(
select you have posted
);
我相信這可能會導致您想要的。 如果不是,則需要使用JOIN。
您可以使用普通聯接或子查詢來執行此操作。
子查詢:
SELECT first_name, last_name, username FROM users
WHERE username IN (
SELECT friend FROM friends
WHERE user='$user'
AND friend LIKE "'%" . $term . "%'")
隱式聯接:
SELECT first_name, last_name, username FROM users, friends
WHERE friend=username
AND user='$user'
AND friend LIKE "'%" . $term . "%'"
顯式聯接:
SELECT first_name, last_name, users.username FROM friends
WHERE friend LIKE "'%" . $term . "%'" AND user='$user'
LEFT JOIN users ON user=username
請修改適合您需求的字段名稱:
SELECT username, lastname, firstname
FROM `SecondTable`
WHERE username in
(SELECT friend as username
FROM friends
WHERE user='$user' AND
friend LIKE '%" . $term . "%'")
select u.username LoggedInUsersUserName, u2.username FriendsUserName
from users u join
friends f on f.username = u.username join
users u2 on u2.username = f.username
您應該能夠從中推斷出所需的一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.