0

オンラインストアの顧客によるポイント使用量を計算しようとしています。時間の経過とともに、顧客はポイントを獲得します。ポイントが引き換えられると、customer.pointsの値は、引き換えに残っているポイントを反映するように変更されます。獲得した追加ポイントもcustomer.pointsに追加されます。このため、アカウントの存続期間中に顧客が持っていたポイント数を決定するための唯一の真のメカニズムは、合計使用量と残りのポイント ( order.total + 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
4

1 に答える 1

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
于 2012-10-30T21:14:22.253 に答える