我试图获取"朋友列表#34;从我的表。我有两个表,一个用于存储用户列表,另一个用于存储与该用户的关系。我添加了sqlfiddle示例模式。我需要抓住所有的朋友"对于指定的用户ID:
CREATE TABLE tbl_users
(`id` int, `name` varchar(7), `description` varchar(55));
INSERT INTO tbl_users
(`id`, `name`, `description`)
VALUES
(1, 'John', '111'),
(2, 'Derrik', '222'),
(3, 'Nikolas', '333'),
(4, 'Hellen', '444'),
(5, 'Jack', '555');
CREATE TABLE tbl_relations
(`id` int, `user_id` int, `following_id` int);
INSERT INTO tbl_relations
(`id`, `user_id`, `following_id`)
VALUES
(1, '1', '2'),
(2, '1', '3'),
(3, '1', '4'),
(4, '2', '1'),
(5, '4', '1');
是的,我可以做两个查询然后进行比较,但我认为这应该适用于一个。
预期结果:如果指定的用户ID = 1,则结果应为2,4用户
THX。
答案 0 :(得分:0)
如果表
这两个表必须具有相同值的列。如果列是user_id
那么
SELECT * from users,relations WHERE users.user_id = relations.user_id;
我希望这个答案可以帮助你:)
答案 1 :(得分:0)
try this:
SELECT tbl_users.*
FROM tbl_users
INNER JOIN tbl_relations ON tbl_relations.user_id = tbl_users.id
答案 2 :(得分:0)
"预期结果:如果指定的用户ID = 1,则结果应为2,4用户"
SELECT x.following_id reciprocations
FROM tbl_relations x
JOIN tbl_relations y
ON y.user_id = x.following_id
AND y.following_id = x.user_id
WHERE x.user_id = 1;
答案 3 :(得分:-1)
对于用户ID 1
,这应返回2,3SELECT id FROM tbl_relations
WHERE user_id = 1 AND id != user_id;
要获取朋友而不是他们的ID,请使用
SELECT * from tbl_users WHERE id IN (SELECT id FROM tbl_relations
WHERE user_id = 1 AND id != user_id);