Sql server中如何將表A和表B的數據合並(乘積方式)


sql server中如何將表A 和表B的數據合並成乘積方式,也就是說表A有2條數據,表B有3條數據,乘積后有6條數據,

這就要用到sql中的笛卡爾積方式了

1、什么是笛卡爾積

  笛卡爾積在SQL中的實現方式既是交叉連接(Cross Join)。所有連接方式都會先生成臨時笛卡爾積表,笛卡爾積是關系代數里的一個概念,

表示兩個表中的每一行數據任意組合。如果分步驟理解的話,內連接可以看做先對兩個表進行了交叉連接后,再通過加上限制條件(SQL中通過關鍵字on)

剔除不符合條件的行的子集,得到的結果就是內連接了

2、實現方式

--1、創建模擬的數據表---
--1.1)產品分類表
create table GoodsCate(
    Mid int not null,
    Code varchar(10) not null,
    Name varchar(20) not null,
)
--1.2)產品類別表
create table GoodsLevel(
    Mid int not null,
    Name varchar(10) not null
)

--2、添加模擬數據--
--2.1)添加產品分類數據
insert into GoodsCate(Mid,Code,Name) values(1,'6801','電子儀器')
insert into GoodsCate(Mid,Code,Name) values(2,'6802','激光儀器')
insert into GoodsCate(Mid,Code,Name) values(3,'6803','掃描儀器')
--2.2)添加產品類別數據
insert into GoodsLevel(Mid,Name) values(1,'Ⅰ類')
insert into GoodsLevel(Mid,Name) values(2,'Ⅱ類')
insert into GoodsLevel(Mid,Name) values(3,'Ⅲ類')

--3、查詢數據表--
select * from GoodsCate
select * from GoodsLevel 

--4、簡單的笛卡爾積使用--
select * from GoodsCate A
cross join GoodsLevel B

3、顯示查詢結果

那如何我要顯示產品編碼+產品類別(6801_1), 最后數據為這樣格式,該怎么修改呢?

6801_1    6801    電子儀器    Ⅰ類
6802_1    6802    激光儀器    Ⅰ類
6803_1    6803    掃描儀器    Ⅰ類
6801_2    6801    電子儀器    Ⅱ類
6802_2    6802    激光儀器    Ⅱ類
6803_2    6803    掃描儀器    Ⅱ類
6801_3    6801    電子儀器    Ⅲ類
6802_3    6802    激光儀器    Ⅲ類
6803_3    6803    掃描儀器    Ⅲ類

--5、查詢經營范圍(6801_1)方法--
select (CAST(A.Code as varchar(20))+'_'+CAST(B.Mid as varchar(20))) CateLevel,
A.Code CateCode,A.Name CateName,B.Name LevelName 
from GoodsCate A
cross join 
GoodsLevel B

最后結果

ps:

詳細了解笛卡爾積網址:http://www.360doc.com/content/14/1229/21/7635_436727229.shtml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM