2013-07-15 82 views
0

我有3个以上的表格。但为了简单起见,让我们取3个产品,产品品种和产品属性。每个产品都有零个或多个品牌以及零个或多个属性。现在我有,如何获取特定的记录,它是SQL中的所有相关记录?

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 funstions?因此,在我的应用程序中,我可以轻松地将xml或json淡化。请让我知道是否有更好的方法。

+0

在您的应用程序中创建json/xml,而不是在数据库级别。只需选择你需要的所有数据。虽然您可以选择带有SQL Server的xml,但请查找for xml子句。 –

+0

此博客链接可能是一个有用的参考:[SQL to JSON](https://www.simple-talk.com/blogs/2013/03/26/sql-server-json-to-table-and-table- to-json /) –

+0

@EsotericScreenName,你可以请它吗? – user960567

回答

2

您可以使用FOR XML clause将SQL Server中的数据选择为XML。这样的查询将为您提供一行包含生成的XML的单个列。 Here's an example

你可以使用这样的事情:

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,使用代码明确地使用文本函数生成它。这会很复杂,可能不会很好,因为SQL Server没有针对文本处理进行优化。生成JSON最好在应用程序级完成。

如果您需要同时发布JSON和XML,我建议在应用程序级别生成两者。这允许只需要一个SQL查询来获取数据,并将数据格式代码保存在一个地方。

0

如果你想这样做在SQL服务器,这里的选项:

  1. 生成JSON字符串在查询
  2. 商店JSON字符串中列字符串更快的渲染

你也可以通过使用前面的答案中提到的JSON libarary来实现它。

相关问题