orderstatusdescription

orderstatusdescription

我正在尝试为问题编写PostgreSQL查询:
2011年购买了多少产品?(2011年购买意味着订单描述在2011年“完成”)。
到目前为止,我有一个问题:

    SELECT
      COUNT(product.id)
    FROM
      product
    JOIN orderitem ON
      productid = product.id
    JOIN "order" ON
      "order".id = orderitem.orderid AND
      EXTRACT(year FROM orderplaced) = 2011
    JOIN orderstatus ON
      orderstatus.orderid = "order".id
    JOIN orderstatusdescription ON
      orderstatusdescription.id = orderstatusdescriptionid AND
      orderstatusdescription.description = 'Completed';

但结果是231410个产品,而数据库只包含1000个。逻辑上使用DISTINCT(product.id)会导致计数1000。
我不知道我做错了什么。

最佳答案

安德烈斯·奥拉特(Andres Olrate)略微修改的查询:

SELECT
  COUNT(orderitem.productid)
FROM
  orderitem
JOIN "order" ON
  "order".id = orderitem.orderid
JOIN orderstatus ON
  orderstatus.orderid = "order".id
JOIN orderstatusdescription ON
  orderstatusdescription.id = orderstatusdescriptionid
WHERE
  EXTRACT(year FROM orderplaced) = 2011
AND  orderstatusdescription.description = 'Completed';

关于sql - SQL查询给出太多结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15233386/

10-11 05:35