SQL查询/一对多关系,其中没有

时间:2018-06-15 12:36:11

标签: sql sql-server-2008

为我的工作提供一些背景知识。我们使用一个自定义应用程序,可以看到在它作为订单进入我们的ERP系统的时间和发货时间之间构建的产品。

我们的ERP有一个PRODUCT HEAD表和一个PRODUCT DETAIL表。我们使用的自定义应用程序仅查看PRODUCT DETAIL表。因此,当需要运送这些产品时,他们希望能够看到ORDERS组合在一起。

INSERT INTO @tmpTable (ordernum, linenum, model, customer, duedate, status, stage, repcode)

SELECT
    ct.ordernum,
    ct.linenum,
    et.model,
    et.customer,
    ct.duedate,
    ct.status
    ct.stage,
    ct.repcode
FROM CustomTable ct
LEFT JOIN ERPTable et On et.ordernum = ct.ordernum AND et.linenum = ct.linenum


Select Distinct
    top1.ordernum,
    top1.customer,
    (
        Select
            ISNULL(linenum, '') AS linenum,
            ISNULL(model, '') AS model,
            ISNULL(duedate, '') AS duedate,
            ISNULL(status, '') AS status,
            ISNULL(stage, '') AS stage,
            ISNULL(repcode, '') AS repcode
        From @tmpTable
        Where ordernum = top1.ordernum
        For XML Path('LineItem'), ROOT('root')
    ) As xmlinfo
From @tmpTable as top1

这就是我目前正在处理的问题,我似乎无法找到一种更好的方法来建立一对多的关系。我不是为每个订单单独调用数据库,而是编译所有的' LINES'作为xml。实际的查询要长得多,并且需要在我们的ERP表中加入多个连接,这反过来会使查询速度变慢。我想知道我这样做的方式是否有效。

我想也许我可以使用带有SQL的GROUP BY来实现这一点,但似乎并非如此,我似乎无法找到一种模仿您使用SSRS报告进行分组的方式的好方法角。

我做了一点挖掘,看来实现这一目标的方法是在标签上使用ng-repeat。

- 处理HTML / Angular级别的分组会更好吗?或者我应该坚持在SQL Server端进行分组?

0 个答案:

没有答案