【发布时间】:2016-09-24 08:13:52
【问题描述】:
我有一个带有多个子表的父表 Products -Hoses、Steeltubes、ElectricCables、FiberOptics。
ProductId - 产品表中的主键字段 ProductId- Hoses、Steeltubes、ElectricCables、FiberOptics 中的 ForeignKey 字段。
产品表与子表是一对多的关系
我想合并所有表格的结果。 例如 - 产品 P1 的 PK 字段 ProductId 在所有子表中用作 FK。
如果当我执行左连接时,Hoses 表有 4 条 ProductId 为 50 的记录,而 Steeltubes 表有 2 条 ProductId 为 50 的记录,那么左连接正在做记录的笛卡尔积,结果显示 8 条记录但它应该是 4 条记录。
;with HOSESTEELCTE
as
(
select '' as ModeType, '' as FiberOpticQty , '' as NumberFibers, '' as FiberLength, '' as CableType , '' as Conductorsize , '' as Voltage,'' as ElecticCableLength , s.TubeMaterial , s.TubeQty, s.TubeID , s.WallThickness , s.DWP ,s.Length as SteelLength , h.HoseSeries, h.HoseLength ,h.ProductId
from Hoses h
left join
(
--'' as HoseSeries,'' as HoseLength ,
select TubeMaterial , TubeQty, TubeID , WallThickness , DWP , Length,ProductId from SteelTubes
) s on (s.ProductId = h.ProductId)
) select * from HOSESTEELCTE
【问题讨论】:
-
MySQL 标记被移除,因为它没有 CTE。
标签: sql-server-2012 database-administration