SQL 购物车的左连接语句

SQL Left-Join Statement for cart

有人可以为我解释这个 sql 代码吗?我们用它来将商品添加到购物车

SELECT 
  c.crt_id, 
  i.item_id, 
  i.item_name, 
  i.price,i.image 
FROM 
  cart c 
  LEFT JOIN item i ON c.item_id = i.item_id 
WHERE 
  c.customer_no = 1 
AND 
  c.delete_flg = 0

cart c LEFT JOIN item i 检索所有购物车及其物品,与 WHERE c.customer_no = 1 AND c.delete_flg = 0 子句相关。

LEFT JOIN 表示无论购物车是否有物品都会被检索。一个简单的 JOIN(等于 INNER JOIN)只会使购物车至少包含 1 件商品。

  1. 它获取 table 购物车中的所有元素,并查看是否每个元素在 table 项中都有一个匹配结果,将两个 table 加入 item_id。如果有匹配条目,它将 return 所有组合。如果没有,它将 return 来自 table 购物车的条目和 null 作为 table 项目的结果。
  2. 通过 customer_no(table 购物车)为 1 和 delete_flag(table 购物车)为 0 过滤先前的结果。
  3. 它只是 return 包含在 select 和 from 语句之间的列。

这条语句:

SELECT c.crt_id, i.item_id, i.item_name, i.price, i.image
FROM cart c LEFT JOIN
     item i
     ON c.item_id = i.item_id
WHERE c.customer_no = 1 AND c.delete_flg = 0;

returns 客户 1 所有未删除购物车的所有项目。如果购物车中的商品不在 item table 中,则仍会返回一行,但除第一列外的所有商品都是 NULL.

它不会修改数据库中的任何数据,因为它是一个 SELECT 查询。如果它对购物车做了任何事情,那么就是在查询返回的结果上使用 UPDATE/INSERT/DELETE(或类似的东西)的后续代码。

  SELECT 
   c.crt_id,
   i.item_id,
   i.item_name,
   i.price,
   i.image 
  FROM cart c 
  LEFT JOIN item i ON c.item_id = i.item_id -- return all items from cart regardless of if the customer has an order or not
  WHERE c.customer_no = 1 -- only fetches data for customer no 1
  AND     c.delete_flg = 0     -- as long as the there is no items in cart that is deleted

因此,return 购物车中的所有商品,无论客户是否有订单,并且他没有从 1 号客户的购物车中移除任何商品。