1

我想从三个表中获取数据: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
4

2 回答 2

3

我不确定你在问什么,但你的 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 ONINNER JOIN right ON

附带说明一下,处理 ADO.NET 相关对象(SqlConnection、SqlCommand、SqlDataAdapter)

于 2012-06-14T13:09:55.133 回答
2

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

于 2012-06-14T14:34:21.100 回答