gpt4 book ai didi

C# 过滤相似表记录 SQL

转载 作者:行者123 更新时间:2023-11-29 00:05:33 25 4
gpt4 key购买 nike

有一个搜索者表,雇主表,类别表,兴趣表..

兴趣表根据他们的兴趣类别存储求职者和雇主的兴趣……并使用外键……

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 有相同的兴趣..

所以我需要的是根据 Seeker ID,显示与 Seeker 有相同兴趣的雇主。

例如:如果给出S ID (From Seeker Table) 2 则显示雇主1和雇主2与他有相同的兴趣!

我使用此代码在 webform 上列出雇主姓名。所以我缺少的是 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 Fiddle here将返回搜索者 ID 主题的员工 ID 数据(我已经过滤了学生 ID 2)。您还没有给我们您的员工或学生表,因此您需要加入这些表以便从您的阅读器中提取字段,如 e_name。我刚刚提取了下面的 FK_ie_ID 外键。

要将其引入您的应用程序,您需要将@sid 参数绑定(bind)到查询。另请注意,SqlCommands 和 Readers 是 IDisposable。

最后,如果您选择的 RDBMS 是 MySql,而不是 Sql Server,您将需要引用适当的 MySql 库并将 SqlConnection 更改为 MySqlConnectionSqlCommand 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();
}
}

关于C# 过滤相似表记录 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com