SQL Server中有多行的多对多

时间:2017-09-11 07:40:49

标签: sql sql-server

我有一个包含以下列的表:

seq_no | detail_no | user_id | guid_key

和另一个表格如下:

头| guid_key | date_entered | login_details | summary_transaction |拖车

现在我希望将两个表格映射在一起,以便最终答案是这样的:

第一行应该是header中的值,后续行应该是seq_no,detail_no和user_id中的值。将有多行seq_no,detail_no和user_id。最后一行应该是预告片。

第一个表包含多行,我需要在第二个表中引用多行。我是SQL编程的新手。我已经找到了许多关系,但我找不到有效的方法来做到这一点。我正在使用guid生成器为这两个表写入唯一键。但是,它们的键不是每行唯一,而是一组行 - >喜欢一组数据。

This is how I want it to be

1 个答案:

答案 0 :(得分:0)

SQL不是一种演示工具,而是您在此尝试实现的工具。您还尝试将两个结果集作为一个结果集存在(您希望表2中的列在表2中的某些行上显示在其他行上)。

你可以这样做
create table #temp (ID int identity(1,1), col1 varchar(200), col2 varchar(200) etc.)

insert into #temp col1, col2, etc values (select seq_no, guid_key, detail_no, user_id from table1)

insert into #temp col1, col2 etc. values (select seq_no, guid_key, header,  date_entered, login_details, summary_transaction from table1 inner join table2 on table1.guid_key = table2.guidkey where trailer is null)

insert into #temp col1, col2 etc. values (select seq_no, guid_key, trailer,  date_entered, login_details, summary_transaction from table1 inner join table2 on table1.guid_key = table2.guidkey where trailer is not null)

select * from #temp order by col1, ID

因此,首先输入所有标题,然后输入详细信息,然后输入预告片。因此,当您通过seq_no和ID订购时,它们将以所需的顺序出现。