1

rolepermission、およびの 3 つのテーブルからデータを取得したいと考えてい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
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 に答える