如何将SQL查询转换为关系代数?

如何将SQL查询转换为关系代数?,sql,sql-server,database,sql-server-2008,relational-algebra,Sql,Sql Server,Database,Sql Server 2008,Relational Algebra,假设有两个数据集: User(id, name, phone) Friend(id, fid) fid是id用户朋友的id用户 为了查找id=123的所有好友的姓名,我编写了以下SQL查询: SELECT name FROM user WHERE id = (SELECT fid FROM friend WHERE id = 123) 我想到了这个关系代数: PROJECT name (SELECT uid =123 (Friend * User)) 有改进/纠正的建议吗?加入表格 SE

假设有两个数据集:

User(id, name, phone)

Friend(id, fid)
fid是id用户朋友的id用户

为了查找id=123的所有好友的姓名,我编写了以下SQL查询:

SELECT name FROM user WHERE id = (SELECT fid FROM friend WHERE id = 123)
我想到了这个关系代数:

PROJECT name (SELECT uid =123 (Friend * User))
有改进/纠正的建议吗?

加入表格

SELECT u.name 
FROM user u
INNER JOIN Friend f ON u.ud = f.fid
WHERE f.id = 123

为第一部分添加了一个答案,您能否解释一下您在启动项目的第二部分中试图实现的目标。。。。所以我能帮上忙的是,子查询不能转换成关系代数??你能解释一下你在开始项目的第二部分中想要实现什么吗。。。。我不确定我的答案(关系代数语句)是否正确,所以在这个语句上寻求帮助。你想从代数中得到什么?