4

我有 3 张桌子:

  • CP_carthead (idOrder)
  • CP_cartrows (idOrder, idCartRow)
  • CP_shipping (idCartRow, idShipping, dateShipped)

每个 idOrder 可以有多个 idCartRows。

我想获取所有idCartRows都存在于 CP_shipping 中的订单。这似乎应该很简单,但我在网上找不到太多。

这是我现在的查询:

SELECT
    s.idOrder
    , s.LatestDateShipped
FROM
    CP_carthead o
    LEFT OUTER JOIN (
                        SELECT
                            MAX(s.dateShipped) [LatestDateShipped]
                            , r.idOrder
                        FROM
                            CP_shipping s
                            LEFT OUTER JOIN CP_cartrows r ON s.idCartRow = r.idCartRow
                        GROUP BY
                            r.idOrder               
                    ) s ON o.idOrder = s.idOrder
4

1 回答 1

3

您的查询从“s”返回行,而不是订单。根据您的问题,我提出了以下查询:

select o.*
from CP_Carthead o
where o.orderId in (select cr.idOrder
                    from cp_cartrows cr left outer join
                         cp_shipping s
                         on cr.idCartRow = s.IdCartrow  
                    group by cr.idOrder
                    having count(s.idCartRow) = COUNT(*)
                   )

in语句中的子查询正在获取所有其手推车都在运输中的订单。

于 2013-01-03T16:30:33.127 回答