【问题标题】:ASP.NET Query associated with three tables与三个表关联的 ASP.NET 查询
【发布时间】:2013-11-08 17:43:59
【问题描述】:

我不太了解 DB 和 Query

我有三张桌子

EMP(包含详细信息)Junction(包含 EMP 表的 ID 和技能表的 ID)技能(包含技能)

这里的联结表提供了与emp和skill的多对多关系,即一个emp可以有很多skill,一种skill可以有很多emp。 现在的问题是我必须通过从技能表中选择技能来使用 E_details 填充 GridView。 你能告诉我一个例子,通过选择特定的 emp ID 和 Skill ID 出现在 Junction Table 中来对 EMP 表进行选择查询...

谢谢

【问题讨论】:

  • 您知道您使用哪种技术来访问您的数据库吗? ADO.NET(System.Data.SqlClient 类)、实体框架(System.Data.Entity 类)还是其他?
  • 您是说用户要选择一项技能,您需要显示具有该技能的员工吗?
  • 是的,我将显示与所选技能相关的员工详细信息

标签: c# asp.net sql


【解决方案1】:

如果你使用的是 ADO.NET,你可以这样写:

string query = @"SELECT e.*
                 FROM EMP e
                 INNER JOIN Junction j ON e.ID = j.empID
                 WHERE j.skillID = @SkillID";

int skillID = 5;

using (var conn = new SqlConnection("connectionString"))
{
    using (var cmd = new SqlCommand(query, conn))
    {
        cmd.Parameters.AddWithValue("@SkillID", skillID);

        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                int id = (int)reader["ID"];
                int name = (string)reader["Name"];

                // etc.
            }
        }
    }
}

在 ASP.NET 中,只需将 skillID 变量作为查询字符串变量提供给请求。并将读取的每一列投影到一个模型中,您可以使用它来填充到 GridView 中。

【讨论】:

    【解决方案2】:

    您需要根据您的表结构对其进行修改...但我假设您将 emp.id 和 Skill.id 作为表中的主键。

    大致如下:

    Select EMP.*, Skill.*
    FROM emp
    INNER JOIN Junction ON emp.ID=junction.empID
    inner join Skill ON skill.id = junction.skillID
    

    您需要根据表中的列以及要从中检索的值来更改此设置...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多