关系之间的内部连接

本文关键字:连接 内部 之间 关系 | 更新日期: 2023-09-27 18:37:15

我想从三个表中获取数据:rolepermissionright 。我使用了内部连接。

法典

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的查询)。但我实际上建议您重新访问架构并为表选择一个不同的非保留名称。