【发布时间】:2019-09-05 10:10:42
【问题描述】:
我有一张orders 的表格,以及这些订单中包含的产品表格。 (products-表有order_id,一个外键引用orders.id)。
我想查询每个订单中包含的产品数量。但是,如果订单根本不包含 任何 产品,我也希望订单包含在结果中。
这意味着一个简单的
SELECT *, COUNT(*) n_products FROM `orders` INNER JOIN `products` on `products.order_id` = `orders.id` GROUP_BY `order_id`
不起作用,因为没有任何产品的订单会消失。
使用 LEFT OUTER JOIN 代替会添加没有产品信息的行,但是会丢失包含 1 个产品的订单和包含 0 个产品的订单之间的区别。
我在这里错过了什么?
【问题讨论】:
-
为什么产品知道自己的订单,却不知道订单自己的产品?产品应该独立于订单...
-
@S-Man 这是实际实际应用程序的简化视图,其中关系通过中间多对多表。
标签: sql postgresql group-by relationship