【问题标题】:JSON Many to Many RelationShip Group ByJSON 多对多关系分组方式
【发布时间】:2021-06-17 23:57:35
【问题描述】:

我正在尝试创建一个允许我执行此操作的 SQL 查询:

我在 SQL Server 2017 中有 3 个表:

CREATE TABLE [dbo].[PRODUCTCATEGORY]
(
    [PROD_ID] [int] NOT NULL,
    [CAT_ID] [int] NOT NULL 

    CONSTRAINT [PK_PRODUCTCATEGORY] 
        PRIMARY KEY CLUSTERED ([PROD_ID] ASC, [CAT_ID] ASC)
)

CREATE TABLE [dbo].[CATEGORY]
(
    [CAT_ID] [int] IDENTITY(1,1) NOT NULL,
    [CAT_TITLE] [varchar](50) NOT NULL

    CONSTRAINT [PK_CATEGORY] 
        PRIMARY KEY CLUSTERED ([CAT_ID] ASC)
)

CREATE TABLE [dbo].[PRODUCT]
(
    [PROD_ID] [int] IDENTITY(1,1) NOT NULL,
    [PROD_TITLE] [varchar](50) NOT NULL

    CONSTRAINT [PK_PRODUCT] 
        PRIMARY KEY CLUSTERED ([PROD_ID] ASC)
)
  • 一个产品可以有 1 到多个类别
  • 一个类别可以有 1 到多个产品
PROD_ID PROD_TITLE
1 Book 1
2 Book 2
CAT_ID CAT_TITLE
1 Cat 1
2 Cat 2
3 Cat 3
PROD_ID CAT_ID
1 1
1 2
2 1
2 3

我想找回这个:

| CAT_ID  |CAT_TITLE | PRODUCTS                                                                |
|:------- |:--------:|:------------------------------------------------------------------------|
| 1       | Cat 1    |[{"PROD_ID":1,"PROD_TITLE":"Book 1"},{"PROD_ID":2,"PROD_TITLE":"Book 2"}]|
| 2       | Cat 2    |[{"PROD_ID":1,"PROD_TITLE":"Book 1"}]                                    |
| 3       | Cat 3    |[{"PROD_ID":2,"PROD_TITLE":"Book 2"}]                                    |

感谢您的帮助

【问题讨论】:

  • 请向我们展示您的尝试。

标签: sql-server tsql group-by many-to-many json-query


【解决方案1】:

我刚刚找到了这个,使用 FOR JSON:

https://docs.microsoft.com/en-us/sql/relational-databases/json/format-query-results-as-json-with-for-json-sql-server?view=sql-server-ver15

我认为这样的事情可能会奏效:

SELECT c.CAT_ID, c.CAT_TITLE, 
(
   SELECT p.PROD_ID, p.PROD_TITLE
   FROM PRODUCT p
   JOIN PRODUCTCATEGORY pc ON pc.PROD_ID = p.PROD_ID
   WHERE pc.CAT_ID = c.CAT_ID
   FOR JSON PATH
) AS ProductsAsJson
FROM CATEGORY c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2021-11-02
    • 2019-02-17
    • 2022-11-14
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多