我想问你关于Facebook的朋友建议。
我有2个表,那是:tb_user和tb_friend。
tb_user
uid | username | full_name
1 | dean | Dean Cool
2 | ryanblk | Ryan Black
3 | maria | Maria Bellen
4 | greg | Greg Munch
tb_friend
friend_one_id | friend_two_id | status
1 | 2 | 1
1 | 4 | 1
3 | 4 | 1
状态: 1 - >朋友
现在我想查询tb_user与tb_friend的链接。条件,如果从不是朋友(状态不是1),则将其显示给建议朋友。
到目前为止我的SQL查询:
$uid --> my session
SELECT
U.uid, U.username, U.full_name FROM tb_user U
WHERE
U.uid != '$uid' ORDER BY RAND() LIMIT 3
请帮忙!
答案 0 :(得分:0)
我有一个类似的场景,我用它作为查询字符串
$query = "SELECT * FROM friend_table,user_table
WHERE ((from_id = '".$_SESSION['logged_user_id']."' AND friend_table.to_id = user_table.user_id)
OR
(to_id = '".$_SESSION['logged_user_id']."' AND friend_table.from_id = user_table.user_id))
AND
friend_table.status <> '1'";
我正在编辑我的db_structure,以便您理解
[WAIT TILL I GIVE DB STRUCTURE SO THAT YOU UNDERSTAND. I AM EDITING THE ANSWER]
我的数据库结构就像这样
user_table
|-------------------------------------------------------------|
| user_id | username | first_name | last_name |
|-------------------------------------------------------------|
| 1 | smruti | Smruti | Singh |
|-------------------------------------------------------------|
| 2 | sunaina | Sunaina | Singh |
|-------------------------------------------------------------|
我的friend_table用于存储朋友之间的真实情况
|-------------------------------------------------------------|
| relation_id | from_id | to_id | status |
|-------------------------------------------------------------|
| 1 | 1 | 2 | 1 |
|-------------------------------------------------------------|
| 2 | 3 | 4 | 0 |
|-------------------------------------------------------------|
修改
这将显示不是您朋友的用户的所有结果。
记住一件事,如果您向某人发送了请求,则会将一行插入到状态为0的friend_table中。如果他/她接受,则状态变为1.如果他/她拒绝,则状态变为2。如果状态为2,您可以再次向他/她发送请求。
所以这里的user_id要么出现在friend_table中,状态不等于1,要么根本不存在。
$query = "SELECT * FROM user_table WHERE user_id NOT IN
(
SELECT user_id FROM friend_table,user_table
WHERE ((from_id = '".$_SESSION['logged_user_id']."' AND
friend_table.to_id = user_table.user_id)
OR
(to_id = '".$_SESSION['logged_user_id']."' AND
friend_table.from_id = user_table.user_id))
AND
friend_table.status = '1')";