C# 筛选器类似表记录 SQL
本文关键字:记录 SQL 筛选 | 更新日期: 2023-09-27 18:35:31
有一个Seeker表,雇主表,类别表,兴趣表。
兴趣表存储寻求者和雇主的兴趣,具体取决于他们的兴趣类别......并使用外键...
FK_is_id = Seeker ID
FK_ie_id = Employer ID
FK_ic_id = Category ID
所以数据是这样存储的:
int_id FK_is_ID FK_ie_ID FK_ic_ID
1 2 null 3
2 2 null 5
3 null 1 3
4 null 3 1
5 null 2 5
6 4 null 1
现在,该表显示 Seeker 2 喜欢类别 2 和 5
雇主 1 喜欢类别 3,雇主 2 喜欢类别5,雇主 3 喜欢类别 1...
这也表明求道者 2 和雇主1 有相似的兴趣,求道者 2 和雇主 2 也有相同的兴趣......
求道者 4 和雇主 3 有相同的兴趣。
所以我需要的是当依赖求职者 ID 时,显示与求职者有相同兴趣的雇主。
例如:如果给出 S ID(来自求道员表)2,则显示雇主 1 和雇主 2 与他有相同的兴趣!
我使用此代码在网络表单上列出雇主名称。所以我缺少的是SQL逻辑。任何帮助都是值得赞赏的!
String ssid;
ssid = Request.Cookies["UserSettings"]["sid"];
SqlConnection myConn2;
SqlCommand myCommand2;
SqlDataReader myReader2;
String SQL2, divjobs;
myConn2 = new SqlConnection(WebConfigurationManager.ConnectionStrings["ApplicationServices"].ToString());
divjobs = "<ul>";
myConn2.Open();
SQL2 = "";
myCommand2 = new SqlCommand(SQL2, myConn2);
myCommand2.Parameters.AddWithValue("@sid", ssid);
myReader2 = myCommand2.ExecuteReader();
while (myReader2.Read())
{
divjobs = divjobs + "<li>" + myReader2["e_name"] + "</a>" + "</li>";
}
divjobs = divjobs + "</ul>";
latestEmp.InnerHtml = divjobs;
myConn2.Close();
根据上面的评论,我仍然不确定您的 RDBMS,但这里的这个 Sql 小提琴将返回搜索者 ID 主题的员工 ID 数据(我已经过滤了学生 ID 2)。您尚未向我们提供您的员工或学生表,因此您需要加入这些表才能从读取器中提取e_name
等字段。我刚刚拉了下面的FK_ie_ID
外键。
若要将其拉入应用程序,需要将 @sid 参数绑定到查询。另请注意,SqlCommand和Reader是可IDposable的。
最后,如果您选择的RDBMS是MySql,而不是Sql Server,则需要引用相应的MySql库并将SqlConnection
更改为MySqlConnection
,SqlCommand
更改为MySqlCommand
。
string SQL2 = "SELECT ins.int_id, ins.FK_is_ID, ine.FK_ie_ID" +
" FROM " +
" Interests ins" + // For Seekers
" INNER JOIN Interests ine" + // For Employers
" ON ins.FK_ic_ID = ine.FK_ic_ID " +
" WHERE " +
" ins.FK_is_ID = @sid " +
" AND ine.FK_ie_ID IS NOT null ";
using var (myCommand2 = new SqlCommand(SQL2, myConn2))
{
myCommand2.CommandType = CommandType.Text;
myCommand2.Parameters.AddWithValue("@sid", ssid);
using (myReader2 = myCommand2.ExecuteReader())
{
var sb = new StringBuilder;
while (myReader2.Read())
{
divjobs = string.Format("<li>{0}</a></li>", (string)myReader2["FK_ie_ID"]);
}
divjobs = sb.ToString();
}
}