查询以按关联对象的数量选择

奥兰多

我有两个看起来像下面的表:

Orders
------
id
tracking_number

ShippingLogs
------
tracking_number
created_at
stage

我想选择仅与一个关联的ShippingLog的订单ID,并且ShippingLog的阶段必须为error如果它有两个ShippingLog条目,则不需要。如果它有一个ShippingLog错误,则其阶段为shipped,我不想要它。

这就是我所拥有的,并且不起作用,而且我知道为什么(它找到带有错误的日志,但是无法知道是否还有其他错误)。我只是真的不知道如何以我需要的方式获得它。

SELECT DISTINCT 
    orders.id, shipping_logs.created_at, COUNT(shipping_logs.*)
FROM
    orders
JOIN
    shipping_logs ON orders.tracking_number = shipping_logs.tracking_number
WHERE
    shipping_logs.created_at BETWEEN '2021-01-01 23:40:00'::timestamp AND '2021-01-26 23:40:00'::timestamp AND shipping_logs.stage = 'error'

GROUP BY
    orders.id, shipping_logs.created_at
HAVING
    COUNT(shipping_logs.*) = 1
ORDER BY
    orders.id, shipping_logs.created_at DESC;
蒂姆·比格莱森(Tim Biegeleisen)

如果您想保留给定要求的两个表的连接中的每一列,那么我建议COUNT在这里使用它作为解析函数:

WITH cte AS (
    SELECT o.id, sl.created_at,
           COUNT(*) OVER (PARTITION BY o.id) num_logs,
           COUNT(*) FILTER (WHERE sl.stage <> 'error')
                    OVER (PARTITION BY o.id) non_error_cnt
    FROM orders o
    INNER JOIN shipping_logs sl ON sl.tracking_number = o.tracking_number
    WHERE sl.created_at BETWEEN '2021-01-01 23:40:00'::timestamp AND
                                '2021-01-26 23:40:00'::timestamp
)

SELECT id AS order_id, created_at
FROM cte
WHERE num_logs = 1 AND non_error_cnt = 0
ORDER BY id, created_at DESC;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按关联对象的数量对列表中的对象总数进行计数

来自分类Dev

Hibernate在保存关联对象的同时触发大量选择查询

来自分类Dev

具有嵌套关联和组的Rails查询(按关联对象)

来自分类Dev

按其关联数量的订购模型

来自分类Dev

按关联对象的属性分组

来自分类Dev

多对多关联选择查询

来自分类Dev

使用表单助手按名称选择对象,但分配与该名称关联的ID

来自分类Dev

直接查询关联表对象

来自分类Dev

在CakePHP 3.0中按多个关联(OR)查询

来自分类Dev

关联总数按单个sql查询计数

来自分类Dev

如何按名称和列关联对象

来自分类Dev

按数量查询的变压器组

来自分类Dev

即使没有关联,也按共同数量排序

来自分类Dev

Laravel / Eloquent-查询-选择关联

来自分类Dev

选择按数组值查询

来自分类Dev

XMLType:按选择查询分组

来自分类Dev

按数量属性过滤对象数组

来自分类Dev

按数量从列表中提取对象

来自分类Dev

选择关联条件为负的对象和关联的组

来自分类Dev

如何查询关联模型上的对象数?

来自分类Dev

SQL查询选择电影的名称和数量

来自分类Dev

lodash的“按对象路径选择”?

来自分类Dev

在查询集中按对象排除

来自分类Dev

按用户查询Firebase对象

来自分类Dev

如何在创建时验证关联对象的数量?

来自分类Dev

Vega lite选择N个对象(数量)

来自分类Dev

Laravel雄辩的查询返回分组对象的数量

来自分类Dev

Linq选择没有子代关联对象的对象

来自分类Dev

如何选择具有关联对象的ActiveRecord对象?