关系之间的内部连接
本文关键字:连接 内部 之间 关系 | 更新日期: 2023-09-27 18:37:15
我想从三个表中获取数据:role
、permission
和 right
。我使用了内部连接。
法典
SqlConnection con = Class3 .GetConnection();
public DataSet showoption1()
{
string sql1 = "select right.rightname,role.rolename
FROM permission
INNER JOIN ON right.rightid = permission.rightid
INNER JOIN role ON permission.roleid = role.roleid ";
SqlCommand cmd = new SqlCommand(sql1, con);
SqlDataAdapter adptr = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adptr.Fill(ds);
DataTable table = ds.Tables[0];
return ds;
}
数据库表
角色
Role Id Role name
1 admin
2 employee
右
rifgtid rightname
1 view courses
2 view assessmenttest
权限(关联)
permissionid rightid roleid
1 1 2
2 1 1
我不确定你在问什么,但你的 sql 语法有错误
SELECT right.rightname,
role.rolename
FROM permission
INNER JOIN right ON right.rightid = permission.rightid
INNER JOIN role ON permission.roleid = role.roleid
我用INNER JOIN right ON
代替了INNER JOIN ON
作为旁注,释放 ADO.NET 相关对象(SqlConnection,SqlCommand,SqlDataAdapter)
如果表的名称是 RIGHT
,那么您需要分隔该名称,因为它是一个保留字,例如
SELECT [right].rightname,
role.rolename
FROM permission
INNER JOIN [right] ON [right].rightid = permission.rightid
INNER JOIN role ON permission.roleid = role.roleid
(窃取@Claudio的查询)。但我实际上建议您重新访问架构并为表选择一个不同的非保留名称。