Member 11185569 Ответов: 2

Как связать две таблицы в одну таблицу


Как объединить две таблицы в одну таблицу ?

Таблица 1
Name    city
Raja_1    Newyork_1
Guna_2    claifornia_2
Guna_3    claifornia_3


Таблица 2
DoorNo
1
2
3
4
5
7


Таблица 3 (ожидаемый результат)

Name    city               DoorNo
Raja_1    Newyork_1           1
Guna_2    claifornia_2        2
Guna_3    claifornia_3        3
                              4
                              5
                              6
                              7

Я использую
dt1= DataTable
dt2= DataTable
dt3= DataTable

Repeater1.DataSource = dt3;
Repeater1.DataBind();


Что я уже пробовал:

string QueryStringData = "SELECT Name,city from Table1;
                    QueryStringData += "SELECT DoorNo from Table2;
                    
using (SqlCommand com_Find = new SqlCommand(QueryStringData, con_Find))
{
   com_Find.CommandType = CommandType.Text;
   con_Find.Open();
   SqlDataAdapter con_Find_adpr = new SqlDataAdapter(com_Find);
   DataSet connection_ds_con_ds = new DataSet();
   con_Find_adpr.Fill(connection_ds_con_ds);
   DataTable dt1 = new DataTable();
   DataTable dt2 = new DataTable();
   DataTable dt3 = new DataTable();
   dt1 = connection_ds_con_ds.Tables[0];
   dt2 = connection_ds_con_ds.Tables[1];
                    
   if (dt1.Rows.Count == dt2.Rows.Count)
      for (int i = 0; i < dt1.Rows.Count; i++)
         dt3.Rows.Add(dt1.Rows[i]["Name"], dt1.Rows[i]["city"], dt2.Rows[i]["DoorNo"]);
   Repeater1.DataSource = dt3;
   Repeater1.DataBind();
}

2 Ответов

Рейтинг:
1

OriginalGriff

Это глупое требование - две таблицы данных не связаны между собой, а значит, нет ничего, что можно было бы "связать" Raja_1 из одной таблицы с "DoorNo" из другой таблицы.

Это означает, что вам нужно более внимательно изучить исходные данные - базу данных yoru - и определить "общий фактор" в таблицах Table1 и Table2, а затем вместо выполнения двух команд SELECT для возврата двух наборов несвязанных данных использовать запрос JOIN для возврата одного комбинированного набора данных: SQL-соединения[^]

Любой другой способ сделать это не гарантирует, что один и тот же запрос(ы), выполненный в несколько разное время, даст вам одинаковые результаты - и это плохая новость!
Помните, что если вы не укажете порядок, в котором будут возвращены данные в рамках вашего запроса ("SELECT ... Порядок по критериям") SQL может возвращать строки в любом порядке, который он сочтет подходящим, - и это может измениться в силу обстоятельств, находящихся вне вашего контроля. Этого может и не произойти, но может произойти - и тогда информация, представленная вашим пользователям, изменится, что может привести к радикальным результатам.


Maciej Los

5ed!

Рейтинг:
0

Maciej Los

Цитата:
Как объединить две таблицы в одну таблицу ?
...
string QueryStringData = "SELECT Name,city from Table1;
                    QueryStringData += "SELECT DoorNo from Table2";

Вы НЕ МОГУ "объединять" (join) таблицы путем объединения строк!

Я полностью согласен с утверждениями OriginalGriff. Между вашими столами нет никакой связи! Таким образом, вам нужно определить отношения между ними, чтобы иметь возможность получать данные из обеих таблиц. На данный момент вы можете обойти эту проблему, используя следующий запрос (не рекомендуемый):
DECLARE @table1 TABLE ([Name] VARCHAR(50),City VARCHAR(50))
INSERT INTO @table1 ([Name], City)
VALUES('Raja_1', 'Newyork_1'),
('Guna_2', 'claifornia_2'),
('Guna_3', 'claifornia_3')

DECLARE @table2 TABLE(DoorNo INT)
INSERT INTO @table2 (DoorNo)
VALUES(1), (2), (3), 
(4), (5), (7)

SELECT t1.*, t2.*
FROM @table1 t1 
	INNER JOIN @table2 t2 ON CONVERT(INT, RIGHT(t1.Name, 1)) = t2.DoorNo


Результат:
Name	City			DoorNo
Raja_1	Newyork_1		1
Guna_2	claifornia_2	2
Guna_3	claifornia_3	3


Для получения более подробной информации, пожалуйста, смотрите:
Соединения (SQL Server) - SQL Server | Microsoft Docs[^]
Визуальное представление SQL-соединений[^]