2014-12-28 2 views
1

Существует Искателем таблица, таблица работодатель, категория таблица, таблица процентов ..C# Фильтр Похожие записи таблицы SQL

Интерес таблице хранятся интересы обоих искателей и работодателей, в зависимости от их категорий интересов ... и использования Внешние ключи ...

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 также имеет те же интересы. ..

Seeker 4 и работодатель 3 имеет те же интересы ..

Так что мне нужно, когда в зависимости от Ищущий ID, дисплей работодателей, имеет такой же интерес, как искателю.

Например: если дано S ID (From Seeker Table) 2, то отобразите, что Работодатель 1 и Работодатель 2 имеют те же интересы, что и он!

Im, используя этот код, чтобы перечислить имена работодателей на веб-форме .. Итак, что не хватает 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(); 
+0

Вы отметили MySql, но вы используете 'SqlConnection', который предназначен для Sql Server. Кроме того, вы разместили это [вопрос до] (http://stackoverflow.com/questions/27674168/c-sharp-filter-similar-table-records-sql/27674229) – StuartLC

+0

А, я думал, что они оба были такими же. .. & о вопросе, поскольку я чувствовал, что я не объяснил это достаточно, я удалил его и переписал его более подробно, надеясь получить то, что я ищу ... Любая помощь была бы appriciated – Rifshan

ответ

1

Я до сих пор не уверен в РСУБД в соответствии с комментариями выше, но это Sql Fiddle here возвратит данные Id Сотрудник для Searcher Id Субъектом (я фильтруется для Student ID 2). Вы не предоставили нам таблицу своего сотрудника или ученика, поэтому вам нужно будет присоединиться к этим таблицам, чтобы извлечь из вашего поля поля, такие как e_name. Я только что нажал на внешний ключ FK_ie_ID.

Чтобы извлечь это приложение, вам необходимо привязать параметр @sid к запросу. Также обратите внимание, что SqlCommands и Readers являются IDisposable.

Наконец, если ваш выбор 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(); 
    } 
} 
+0

Большое спасибо, код работая нормально ... То точно, что я хочу делать .. и, как я уже сказал, мне нужно e_name, чтобы распечатать наш. У меня есть e_id, e_name в таблице работодателей, поэтому, если я присоединяюсь к этому так. 'SELECT emp .e_name, ins.int_id, ins.FK_is_ID, ine.FK_ie_ID "+" FROM "+" Интересы ins "+" INNER JOIN Интересы ine "+" ON ins.FK_ic_ID = ine.FK_ic_ID "+" ПОЛНОЕ ВНУТРЕННЕЕ СОЕДИНЕНИЕ работодателей emp on emp.e_id = ins.FK_ie_id "+" WHERE "+" ins.FK_is_ID = @sid "+" AND ine.FK_ie_ID НЕВОЗМОЖНО и myreader2 ["e_name"]; Его выдача не распечатывается, но если я распечатаю FK_ie_id, она распечатывается. – Rifshan

+0

Нет полного внешнего присоединения к работодателю - заменить на внутреннее соединение. Также добавьте emp.emp_name в список выбора. – StuartLC

+0

Когда я перехожу к Inner Join, ничего не получает, но с Full Outer Join работает нормально ... и что такое список выбора? Если его начальная часть i добавила emp.e_name ... – Rifshan

Смежные вопросы