我不太了解 DB 和 Query
我有三张桌子
EMP(包含详细信息) Junction(包含 EMP 表 ID 和技能表 ID) Skill(包含技能)
这里的联结表提供了与emp和skill的多对多关系,即一个emp可以有很多skill,一种skill可以有很多emp。现在的问题是我必须通过从技能表中选择技能来使用 E_details 填充 GridView。你能告诉我一个例子,通过选择特定的 emp ID 和 Skill ID 出现在联结表中,对 EMP 表进行选择查询...
谢谢
您需要根据您的表结构来修改它......但我假设您将 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
您需要根据表中的列以及要从中检索的值来更改它...
如果您使用的是 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 中。