Mysql 从两个表中提取数据并将它们连接在一起

Mysql 从两个表中提取数据并将它们连接在一起,mysql,sql,Mysql,Sql,我有一个名为participant_tb的表,表中的列如下 参与者id:1,用户名:“atom”,全名:“abc”参与者id: 2,用户名:“ion”,全名:“def”参与者id:3,用户名: “分子”,全名:“ghi”参与者\u id:4,用户名:“化合物”, 全名:“jkl” 我有另一个表,看起来像这样,这个表叫做follower_tb 跟随id:1,跟随id:1,跟随id:2,跟随id:2, 跟随者id:2,跟随者id:1,跟随者id:3,跟随者id:3, 跟随者id:1,跟随者id:4,

我有一个名为participant_tb的表,表中的列如下

参与者id:1,用户名:“atom”,全名:“abc”参与者id: 2,用户名:“ion”,全名:“def”参与者id:3,用户名: “分子”,全名:“ghi”参与者\u id:4,用户名:“化合物”, 全名:“jkl”

我有另一个表,看起来像这样,这个表叫做follower_tb

跟随id:1,跟随id:1,跟随id:2,跟随id:2, 跟随者id:2,跟随者id:1,跟随者id:3,跟随者id:3, 跟随者id:1,跟随者id:4,跟随者id:1,跟随者id:4

一旦有人单击follow按钮,跟随者的id将存储在follower_id中,被跟随者的id将存储在followerd_id列中。我想做的是:假设参与者id为1 loggedin的“atom”,我想获取他正在跟踪的人和跟踪他的人的列表

我试过这样的方法:

SELECT p.participant_id, p.username, p.fullname, f.follower_username, f.followed_username, f.follower_id
FROM my_participants p
JOIN my_followers f ON ( p.participant_id = f.followed_id ) 
WHERE followed_id =  1 || follower_id =  1
我的问题是,它只获取那些跟随atom的

我也试过这个

SELECT p.participant_id, p.username, p.fullname, f.follower_username, f.followed_username, f.follower_id
FROM my_participants p
JOIN my_followers f ON ( p.participant_id = f.follower_id ) 
WHERE followed_id =  1 || follower_id =  1
我的问题是,它的结果中包含了原子。 生产这样的东西

参与者id:1,用户名:“atom”,追随者id:1,后跟id:2

参与者id:2,用户名:“ion”,追随者id:1,后跟id:2

参与者id:1,用户名:“atom”,跟随者id:2,跟随者id:1, 参与者id:2,用户名:“ion”,追随者id:2,后跟id:1, 参与者id:3,用户名:'molecular',跟随者id:3,跟随者id: 1. 参与者id:1,用户名:“atom”,跟随者id:3,跟随者id: 1. 参与者id:4,用户名:“复合”,追随者id:1, 编号:4 参与者id:1,用户名:“atoom”,追随者id:1, 编号:4

我想要这样的东西:

SELECT p.participant_id, p.username, p.fullname, f.follower_username, f.followed_username, f.follower_id
FROM my_participants p
JOIN my_followers f ON ( p.participant_id = f.followed_id ) 
WHERE followed_id =  1 || follower_id =  1
参与者id:2,用户名:“ion”,追随者id:1,后跟id:2, 参与者id:2,用户名:“ion”,追随者id:2,后跟id:1, 参与者id:3,用户名:'molecular',跟随者id:3,跟随者id: 1,参与者id:4,用户名:“复合”,追随者id:1, 编号:4

或者类似的东西(第一行显示atom正在跟踪此人,而此人正在跟踪):

参与者id:2,用户名:“ion”,追随者id:2,后跟id:2, 参与者id:3,用户名:'molecular',跟随者id:3,跟随者id: 1. 参与者id:4,用户名:“复合”,追随者id:1, 编号:4

试试这个:


选择p.participant\u id、p.username、p.fullname、f.follower\u username、f.follower\u username、f.follower\u id 从我的
加入my_followers f ON((p.participant_id=f.follower_id)或(p.participant_id=f.followerd_id))

这看起来像是a的作业,它允许您使用一个查询的结果作为另一个查询的输入。事实证明,获取关注者和跟随者的查询非常相似

#select those FOLLOWING the logged-in account

SELECT p.participant_id, p.username, f.follower_id, f.followed_id FROM participant_tb AS p
JOIN follower_tb AS f ON (p.participant_id = f.follower_id)
WHERE p.participant_id IN (
    #make a sub-query to fetch the follower_id's of the entries that follow participant_id 1

    SELECT f.follower_id
    FROM participant_tb AS p
    JOIN follower_tb AS f ON (p.participant_id = f.followed_id)
    WHERE participant_id = 1 #your value here
);
子查询选择
participant\u id
1后面的每个
follower\u id
,然后使用该id列表从
participant\u tb
中选择用户名

#select those BEING FOLLOWED BY the logged-in account

SELECT p.participant_id, p.username, f.follower_id, f.followed_id FROM participant_tb AS p
JOIN follower_tb AS f ON (p.participant_id = f.followed_id)
WHERE p.participant_id IN (
    #make a sub-query to fetch the follower_id's of the entries that are being followed by participant_id 1

    SELECT f.followed_id
    FROM participant_tb AS p
    JOIN follower_tb AS f ON (p.participant_id = f.follower_id)
    WHERE participant_id = 1 #your value here
);
此子查询几乎相同,但它选择所有元素的
后跟参与者id

查询1的返回值:

particiapnt_id  username    follower_id followed_id
2               ion         2           1
3               molecule    3           1
查询2的返回值:

particiapnt_id  username    follower_id followed_id
2               ion         1           2
4               compound    1           4

选择p.participant\u id、p.username、p.fullname、f.follower\u username、f.follower\u username、f.follower\u id 从我的 加入我的追随者f ON(p.participant_id=f.follower_id | | p.participant_id=f.followerd_id)
其中p.participant_id!=1和(f.followerd_id=1 | | f.follower_id=1)

谢谢,我试过了,第一个查询得到了0行,还有子查询。你能再看看有什么问题吗?值得注意的是,我在查询中使用的表名与你在示例中使用的表名略有不同-你检查过所有表名是否与你的定义匹配吗?是的,我检查过。如果名称是di不过,它会抛出一个错误我不确定在这种情况下会出现什么问题。唯一想到的是您测试的ID没有任何追随者,表有不匹配的ID,一个或多个表中没有数据(我经常犯这个错误…),或格式出现某种问题。听起来您可能无意中使用了
follow\u id
而不是
follower\u id
followerd\u id
而不是查询中的某个位置。您能否提供有关您正在使用的查询、如何调用它和/或表格式的更多信息?是否尝试合并这两种选择统计在一个查询中添加元素?我们拥有的信息越多,我们就越能提供帮助。谢谢,我尝试了这个方法(我只添加了follower_id=1或follower_id=1),但我遇到了我在提问时提到的一个问题,即:它还获取了“atom”的详细信息,这不是我想要的。