用于获取特定用户的朋友发布的视频的Mysql查询

时间:2017-05-17 17:25:38

标签: mysql

有没有人可以帮我在mysql中编写查询来获取特定用户的朋友发布的视频。我有3个表(用户,朋友和视频),表格结构如下。

用户 - id

朋友 - id,user_id [来自用户表],friend_id [来自用户表]

视频 - id,user_id [来自用户表],video_name

例如:身份1的用户有3个朋友2,3,并且4在朋友表中映射。每个朋友都发布了2个视频,映射到视频表中。因此,当我以用户1身份登录时,我需要列出2,3和4发布的视频,并从用户表中提取他们的详细信息。

提前致谢

1 个答案:

答案 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