0

我不太了解 DB 和 Query

我有三张桌子

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

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

谢谢

4

2 回答 2

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

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

于 2013-11-08T17:49:38.130 回答
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 中。

于 2013-11-08T17:59:25.450 回答