求助一道 SQL难题^^^^^^^^^^^^^^^^^^^
A表
CatalogID CatalogName ParentCatalogID
----------- ---------------------------------------------- ---------------
10 可领用资产 0
11 电子类设备 10
12 办公家具 10
13 办公一体化 10
14 笔记本 11
15 台式机 11
16 服务器 11
17 办公桌 12
18 办公纸 12
19 办公一体化设备 13
22 rrr 0
23 444 11
24 555 14
B表
DeviceID CatalogID DeviceName DeviceDesc
----------- ----------- --------------------------- -------------
8 14 IBM笔记本 配制一般,没得说了
9 14 海尔笔记本 配制一般,没得说了
10 15 IBM台式机 配制一般,没得说了
11 16 IBM服务器 配制一般,没得说了
12 17 IBM办公桌 配制一般,没得说了
想要的结果是:(由CatalogID = 14 的条件得到的,具体说是由A表中的CatalogID=14找到A到对应的ParentCatalogID=14 记录 并与B表中的CatalogID=14 的记录联合在一起)
名称(CatalogName) 配置信息(DeviceDesc)
555 null
IBM笔记本 配制一般,没得说了
海尔笔记本 配制一般,没得说了
[解决办法]
SELECT CatalogID,CatalogName FROM A WHERE ParentCatalogID=14
UNION ALL
SELECT DeviceName,DeviceDesc FROM B WHERE CatalogID=14
[解决办法]
SELECT BB.CatalogName DeviceName,NULL AS DeviceDesc FROM A AA INNER JOIN A BB ON BB.ParentCatalogID=AA.CatalogID WHERE AA.CatalogID =14
UNION ALL
SELECT DeviceName,DeviceDesc FROM B WHERE CatalogID=14