![](/img/trans.png)
[英]SQL join to table with 3 possible cases: table can have no records, match 1 or more, records or require all records found to match
[英]SQL Join only if all records have a match
我有3张桌子:
每个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
您的查询返回的是“ 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
语句中的子查询正在获取所有订单都在运输中的订单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.