PostgreSQL - 如何使用 WHERE 获得 0 值?

皮埃尔姆

我目前正在研究具有 2 个数据表的 PostgreSQL:项目和订单。

我想显示一段时间内每个项目的订单数,但如果名称为 0,我想保持显示名称。

我实际上在做:

SELECT Item.name, count(Order.id) from Item
INNER JOIN Order ON Item.id = Order.it_id
WHERE Order.date > '01/08/2021'

问题是我的结果是:

Chocolate | 1
Cake | 2
Muffin | 3

我想要:

Chocolate | 1
Cake | 2
Muffin | 3
Pancake | 0
Donut | 0

我使用了一个 RIGHT JOIN,它在没有我的 WHERE 条件的情况下工作,但我需要用我的结果值的日期进行过滤。

也许我不是在做这件事的好方法。我不知道这是否可能,或者是否有其他方法可以做到。

先感谢您。

戈登·利诺夫

首先,您的查询应该返回一个错误,因为它没有group by.

其次,你想要一个left join

SELECT i.name, COUNT(o.id)
FROM Item i LEFT JOIN
     Order o
     ON i.id = o.it_id AND
        o.date >= '2021-01-08'
GROUP BY i.name;

另请注意,日期采用标准格式,并且条件移动到ON子句。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章