ASP.NET Query与三个表相关联

时间:2013-11-08 17:44:00

标签: c# asp.net sql

我不太了解DB和Query

我有三张桌子

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

这里的联结表提供了与emp和技能的多对多关系,即一个emp可以有很多技能,一个技能可以有很多emp。 现在问题是我要通过选择skiltable中的技能来填充带有E_details的GridView。 你能告诉我一个例子来为EMP表做一个选择查询,方法是选择具有哪个emp ID和技能ID出现在Junction Table中......

由于

2 个答案:

答案 0 :(得分:0)

你需要根据你的表结构来修改它......但是我假设你有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

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

答案 1 :(得分:0)

如果您使用的是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内部。