mysql - MySQL查询中的问题

标签 mysql

我目前正在开发一个数字移动忠诚度应用程序,但在查询 mysql 代码时遇到问题...

我有 4 个表:Customer、Card、Redemption、Merchant

目前我正在尝试做的是,我希望我的系统在进行兑换时首先检查客户是否拥有某个商家的成员(member)卡

  • 如果是,那么他们可以继续
  • 如果没有,系统会为他们创建一张卡片并继续

兑换码将由商家生成...

问题是我应该如何查询我的代码才能这样做?

Customer

 - Customer_ID
 - C_Email
 - C_Password
 - C_Name

Card

 - Card_ID
 - Chop_Amt
 - Customer_ID*
 - Merchant_ID*

Merchant

 - Merchant_ID
 - Merchant_Name

Redemption

 - Red_ID
 - Red_Code
 - Card_ID*
 - Merchant_ID*

我刚才试着自己写了一个代码...有人可以帮我检查一下吗?

select * 
from customer customer 
join card card 
  on customer.customer_id = card.customer_id 
join redemption redemption 
  on card.merchant_id = redemption.merchant_id 
where card.merchant_id = redemption.merchant_id and
      redemption.red_code = 'A002'

最佳答案

我建议在 Card 表中为商家/客户条目设置一个唯一索引。如果你采用这种方法,你可以执行 INSERT INTO ... ON DUPLICATE KEY UPDATE id = id。这将确保记录无论如何都存在。

要创建索引,请执行此操作

CREATE UNIQUE INDEX customer_merchant ON Card (Customer_ID, Merchant_ID);

现在您已经准备就绪,继续执行插入操作,如果已经存在,则不会插入新行

INSERT INTO Card (Chop_Amt, Customer_ID, Merchant_ID) VALUES(0.00, 1, 1) ON DUPLICATE KEY UPDATE Card_ID = Card_ID

UPDATE Card_ID = Card_ID 部分只是“不做任何事情”的别名,因为它将 Card_ID 设置为自身

关于mysql - MySQL查询中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625645/

相关文章:

php - 简化用于 SQL 数据检索的 PHP

mysql - SELECT 查询根据行数进行选择

php - 如何使用 TCPDF 发送多封包含 PDF 的电子邮件

mysql - 如果列有值 A,如何获取记录,如果没有则为 B?

mysql - 将列名作为参数传递给 MySql 函数

mysql - 在报告中使用 SUM,其中值来自多个表

php - 如何使用 PhpStorm 连接到 Openshift 数据库?

mysql - 重命名的sql数据库现在无法连接

mysql - 根据日期插入和更新表行

java - 我的 servlet 没有在 mysql 中保存数据