Sql 将不同表中的数据传输到维度表中
我正在尝试使用以下查询使用AdventureWorks数据库中的数据填充我的产品维度Sql 将不同表中的数据传输到维度表中,sql,sql-server,join,dimension,insert-into,Sql,Sql Server,Join,Dimension,Insert Into,我正在尝试使用以下查询使用AdventureWorks数据库中的数据填充我的产品维度 SELECT product.Class, product.Color, product.DaysToManufacture, product.DiscontinuedDate, product.ProductLine, product.FinishedGoodsFlag, product.ListPrice, product.MakeFlag,
SELECT product.Class,
product.Color,
product.DaysToManufacture,
product.DiscontinuedDate,
product.ProductLine,
product.FinishedGoodsFlag,
product.ListPrice,
product.MakeFlag,
product.Name AS productName,
productDescription.[Description],
product.ProductNumber,
product.ReorderPoint,
product.SafetyStockLevel,
product.SellEndDate,
product.SellStartDate,
product.Size,
product.StandardCost,
product.Style,
product.[Weight],
model.Name AS model,
product.WeightUnitMeasureCode,
product.SizeUnitMeasureCode,
subcategory.Name AS subcategoryName,
category.Name AS categoryName,
photo.LargePhoto,
photo.LargePhotoFileName,
photo.ThumbNailPhoto,
photo.ThumbnailPhotoFileName
FROM AdventureWorks2008R2.Production.Product product
INNER JOIN AdventureWorks2008R2.Production.ProductModel model
ON (product.ProductModelID = model.ProductModelID)
INNER JOIN AdventureWorks2008R2.Production.ProductSubcategory subcategory
ON (subcategory.ProductSubcategoryID = product.ProductSubcategoryID)
INNER JOIN AdventureWorks2008R2.Production.ProductCategory category
ON (category.ProductCategoryID = subcategory.ProductCategoryID)
INNER JOIN AdventureWorks2008R2.Production.ProductProductPhoto productphoto
ON (productphoto.ProductID = product.ProductID)
INNER JOIN AdventureWorks2008R2.Production.ProductPhoto photo
ON (productphoto.ProductPhotoID = photo.ProductPhotoID)
INNER JOIN AdventureWorks2008R2.Production.ProductModelProductDescriptionCulture productModelDescription
ON (productModelDescription.ProductModelID = model.ProductModelID)
INNER JOIN AdventureWorks2008R2.Production.ProductDescription productDescription
ON (productModelDescription.ProductDescriptionID = productDescription.ProductDescriptionID)
WHERE productModelDescription.CultureID = 'en';
然而,产品表中有504条产品记录,但此查询只生成294条记录。在跟踪查询一段时间后,我发现获取产品描述的连接是减少产品记录数量的原因。
我的问题是如何在获取产品描述信息的同时获取所有产品记录(504),如果未找到put NULL,您可以使用ProductDescription表的完全外部联接
.....
.....
INNER JOIN AdventureWorks2008R2.Production.ProductModelProductDescriptionCulture productModelDescription
ON (productModelDescription.ProductModelID = model.ProductModelID)
FULL OUTER JOIN AdventureWorks2008R2.Production.ProductDescription productDescription
.....
通过使用左连接,您将获得所有产品。内部联接将删除ON语句中不匹配的once行 编辑:此图像显示不同类型联接的结果: 您可以看到,通过使用内部联接,您只能得到两个表重叠的行,而使用左联接,您将始终返回第一个表的完整集合