我不确定正常联接会对我有什么样的帮助:
我有两个表作为我正在构建的应用的一部分:一个只在第一列中列出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']
这将从“friends”表中返回包含搜索词$ term的登录用户的朋友的用户名列表。
接下来,我想运行一个查询,该查询返回与第一个查询匹配的所有用户的first name
,last name
和username
(已登录用户的朋友)并且名字或姓氏包含相同的搜索词,$ term,通过javascript传递给网址。此查询必须位于“用户”表中,因为它只包含名字和姓氏。
我只是不确定如何加入表并以这样的方式运行查询,以便仅为用户的朋友获取此信息。
答案 0 :(得分:0)
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%';
答案 1 :(得分:0)
在这种情况下,您可以使用IN。
SELECT firstname, lastname, username from tablename WHERE username IN(
select you have posted
);
我相信这可能会导致你想要的东西。如果不是,您将需要使用JOIN。
答案 2 :(得分:0)
您可以使用普通联接或使用子查询来执行此操作。
子查询:
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
答案 3 :(得分:0)
请修改符合您需求的字段名称:
SELECT username, lastname, firstname
FROM `SecondTable`
WHERE username in
(SELECT friend as username
FROM friends
WHERE user='$user' AND
friend LIKE '%" . $term . "%'")
答案 4 :(得分:0)
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
你应该能够从中推断出你需要的任何东西。