有没有人可以帮我在mysql中编写查询来获取特定用户的朋友发布的视频。我有3个表(用户,朋友和视频),表格结构如下。
用户 - id
朋友 - id,user_id [来自用户表],friend_id [来自用户表]
视频 - id,user_id [来自用户表],video_name
例如:身份1的用户有3个朋友2,3,并且4在朋友表中映射。每个朋友都发布了2个视频,映射到视频表中。因此,当我以用户1身份登录时,我需要列出2,3和4发布的视频,并从用户表中提取他们的详细信息。
提前致谢
答案 0 :(得分:1)
JOIN
正是您要找的。这可以用于基于它们之间的共同点来“链接”多个表。这是规范化
第一部分是将“朋友”表链接回“用户”表。我将使用局部变量(@UserID)并将其设置为您的。我真的不知道你会从朋友的信息中得到什么信息,所以我将在所有查询中使用泛型作为姓氏和名字
SET @UserID = 1 -- Your UserID
SELECT u.LastName, u.FirstName
FROM Friends AS f
INNER JOIN Users AS u ON f.Friends_ID = u.User_ID
WHERE f.User_ID = @UserID
然后第二部分将用户链接到视频。此查询将返回用户名信息以及所有视频的名称:
SELECT u.LastName, u.FirstName, v.video_name
FROM Users AS u
INNER JOIN Videos AS v ON u.User_ID = v.User_ID
所以现在我们有了基础知识。对于您的示例,您希望用户从他们的所有朋友那里获取所有视频。我们实际上可以将这两个查询组合成一个查询来实现:
SET @UserID = 1 -- Your UserID
SELECT u.LastName, u.FirstName, v.video_name
FROM Friends AS f
INNER JOIN Users AS u ON f.Friends_ID = u.User_ID
INNER JOIN Videos AS v ON u.User_ID = v.User_ID
WHERE f.User_ID = @UserID