Хорошо, мое описание немного скучно, но терпите меня.
У меня есть два чрезвычайно длинных запроса, которые я выполняю для нескольких таблиц, используя INNER JOIN. Единственное различие между этими двумя запросами состоит в том, что они принимают разные входные значения для одного из предложений WHERE, которые они получают из двух отдельных DropDownLists. Результаты этих запросов идентичны, за исключением столбцов time1 / time2.
string query1 = "select Name = t1.name, time1=(SELECT hours FROM table3 WHERE street=list1.selectedvalue), t2.address from [table1] t1 INNER JOIN [table2] t2 ON t1.param = t2.param ORDER BY Name";
string query2 = "select Name = t1.name, time1=(SELECT hours FROM table3 WHERE street=list2.selectedvalue), t2.address from [table1] t1 INNER JOIN [table2] t2 ON t1.param = t2.param ORDER BY Name";
(Пожалуйста, не беспокойтесь о синтаксисе запросов выше, я выполнил запросы, и они оба возвращают ожидаемые результаты.)
Я хотел бы объединить эти две таблицы в один набор данных (или любую другую структуру, которая может использоваться в качестве источника данных для вида сетки). Столбец «имя» уникален, некоторые другие тоже могут быть, я могу проверить. Я хочу, чтобы столбцы финальной таблицы напоминали
Имя Время1 Время2 Адрес анализа
- Порядок столбцов не имеет большого значения, но если это не слишком много работы, я бы предпочел порядок выше.
- Я хотел бы выполнить математические операции над временем1 и временем2 и соответственно обновить столбец анализа. Мне лучше делать это в C # или JS?
В настоящее время я использую таблицу данных для сбора результатов двух запросов. Я попытался использовать метод Datatable.Merge, но на самом деле это удваивает количество строк (вроде как внешнее соединение), несмотря на одинаковые имена столбцов (в columns.Add (new DataColumn ...)
Спасибо за внимание :) Я ценю ваш вклад.
Datatable dt1 = new datatable;
Datatable dt2 = new datatable;
dt1.Columns.Add(new DataColumn("name", typeof(string)));
dt1.Columns.Add(new DataColumn("time1", typeof(int)));
dt1.Columns.Add(new DataColumn("time2", typeof(int)));
dt1.Columns.Add(new DataColumn("analysis", typeof(string)));
dt1.Columns.Add(new DataColumn("address", typeof(string)));
SqlDataReader dr = cmd1.ExecuteReader();
while (dr.Read())
{
DataRow drow = new DataRow();
drow["name"] = dr["name"].ToString();
drow["time1"] = dr["time1"];
drow["address"] = dr["CurrentTime"].ToString();
dt1.Rows.Add(drow);
}
dr.Close();
dr = cmd2.ExecuteReader();
while (dr.Read())
{
DataRow drow = new DataRow();
drow["time2"] = dr["time1"];
drow["analysis"] = "I need javascript here";
dt2.Rows.Add(drow);
}
dr.Close();
dt1.Merge (dt2);
this.GridView1.DataSource = dt1;
this.GridView1.DataBind;