如何获取特定记录和it';SQL中的所有相关记录是什么?
我有三张以上的桌子。但为了简单起见,让我们看3个产品,ProductBrands和ProductAttributes。每个产品都有零个或多个品牌和零个或多个属性。现在我有如何获取特定记录和it';SQL中的所有相关记录是什么?,sql,sql-server,tsql,sql-server-2008-r2,Sql,Sql Server,Tsql,Sql Server 2008 R2,我有三张以上的桌子。但为了简单起见,让我们看3个产品,ProductBrands和ProductAttributes。每个产品都有零个或多个品牌和零个或多个属性。现在我有 SELECT P.Name,P.ID, P.Desc FROM Products 但是我想在同一个SQL中选择所有产品属性和品牌。我在想, SELECT P.Name,P.ID, P.Desc, GetProductAttributesInJSONOrXML(P.ID), GetProductBrandsInJSONOrXM
SELECT P.Name,P.ID, P.Desc FROM Products
但是我想在同一个SQL中选择所有产品属性和品牌。我在想,
SELECT P.Name,P.ID, P.Desc, GetProductAttributesInJSONOrXML(P.ID), GetProductBrandsInJSONOrXML(P.ID) FROM Products
如何创建GetProductAttributesInJSONOrXML和GetProductBrandsInJSONOrXML函数?因此,在我的应用程序中,我可以轻松地反序列化xml或json。请告诉我是否有更好的方法。您可以使用选择SQL Server中的数据作为XML。这样的查询将返回一行和一列,其中包含生成的XML 您可以使用以下内容:
SELECT Product.Name, Product.ID, Product.Desc, Attribs.Attribute, Brands.Brand
FROM Products Product
LEFT JOIN ProductBrands Brands ON Product.ID = Brands.ProductID
LEFT JOIN ProductAttributes Attribs ON Product.ID = Attribs.ProductID
FOR XML AUTO, ELEMENTS
要获得类似这样的XML模式,每行有一个产品组:
<Product>
<Name></Name>
<ID></ID>
<Desc></Desc>
<Attribs>
<Attribute></Attribute>
</Attribs>
<Brands>
<Brand></Brand>
</Brands>
</Product>
...
...
该子句有许多不同的选项,可以使模式完全按照您想要的方式格式化,尽管对于更复杂的设计可能需要一些工作
在SQL Server上无法生成JSON,除非使用代码通过文本函数显式生成JSON。这将很复杂,而且可能不会很好地执行,因为SQL Server没有针对文本处理进行优化。生成JSON最好在应用程序级别完成
如果需要同时发出JSON和XML,我建议在应用程序级别同时生成这两种格式。这允许只需一个SQL查询即可获取数据,并将数据格式代码保存在一个位置。如果要在SQL server中执行此操作,请选择以下选项:
您也可以在java中使用前面的答案中提到的JSON库来实现这一点。在应用程序中创建JSON/xml,而不是在DB级别。只需选择所需的所有数据。虽然您可以使用SQL server选择xml,但请查找for xml子句。此博客链接可能是一个有用的参考:@EstericScreenName,您能找到它吗?