MySQL查询 - 列出2个表中的数据,其中NOT EXISTS

时间:2012-10-30 20:50:15

标签: mysql

我正在尝试计算在线商店的客户使用点数。随着时间的推移,客户获得积分兑换积分时,会修改 customer.points 的值以反映剩余的积分兑换。获得的任何其他积分也会添加到 customer.points 。因此,确定客户在帐户生命周期内所拥有的积分数的唯一真实机制是使用剩余积分来计算总使用量( order。总计 + customer.points )。

下面的查询会返回所需的结果,但仅限于那些已经重新获得积分的客户。我想要的是,因为所有客户都有积分,所以也能够为那些没有重新获得积分的人返回积分余额。

SELECT customer.store_id, customer.customer_id, `order`.total + customer.points 
    AS allpoints, customer.firstname, customer.lastname 
    FROM `order`
    INNER JOIN customer ON `order`.customer_id = customer.customer_id
    WHERE (customer.store_id =3)
    GROUP BY customer.customer_id

1 个答案:

答案 0 :(得分:0)

听起来你需要使用left outer join,它将返回连接左侧表的所有行,如果存在记录,则只返回右侧表的行。这意味着当记录不存在时,您需要处理null表的order值。

SELECT
  customer.store_id,
  customer.customer_id,
  isnull(order.total, 0) + customer.points AS allpoints,
  customer.firstname,
  customer.lastname
FROM customer
  LEFT OUTER JOIN order ON order.customer_id = customer.customer_id
WHERE (customer.store_id =3)
GROUP BY customer.customer_id