不同表传输数据到只有

问题描述:

我试图填补我的产品尺寸但也有在产品表504条产品记录使用下面的查询不同表传输数据到只有

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'; 

从AdventureWorks数据库中的数据有,但此查询产量维度表294条记录。在查询一段时间之后,我发现产品描述的联结是扣除产品记录数量的原因。 我的问题是如何获得所有的产品记录(504),同时获取产品描述信息,如果没有发现把NULL

您可以使用产品描述表的FULL OUTER JOIN。

..... 
..... 
INNER JOIN AdventureWorks2008R2.Production.ProductModelProductDescriptionCulture productModelDescription 
      ON (productModelDescription.ProductModelID = model.ProductModelID) 
     FULL OUTER JOIN AdventureWorks2008R2.Production.ProductDescription productDescription 
..... 

通过使用LEFT JOIN,您将获得所有产品。 INNER JOIN将删除ON语句中不匹配的行。

编辑:此图片显示了从不同类型的结果的加入:Sql joins

你可以看到有通过使用INNER JOIN你只能得到两个表重叠的行,而使用LEFT JOIN你永远返回第一个表的全套。