MySQL查询中的问题

MySQL查询中的问题,mysql,Mysql,我目前正在开发一个数字移动忠诚度应用程序,我在查询mysql代码时遇到了一个问题 我有4张表:客户、卡、兑换、商户 目前,我正试图做的是,我希望我的系统首先检查客户在兑换时是否拥有某个商户的忠诚卡 如果是,那么他们可以继续 如果没有,系统将为他们创建一张卡并继续 兑换代码将由商户生成 问题是我应该如何查询我的代码来实现这一点 Customer - Customer_ID - C_Email - C_Password - C_Name Card - Card_ID - Cho

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

我有4张表:
客户、卡、兑换、商户

目前,我正试图做的是,我希望我的系统首先检查客户在兑换时是否拥有某个商户的忠诚卡

  • 如果是,那么他们可以继续
  • 如果没有,系统将为他们创建一张卡并继续
兑换代码将由商户生成

问题是我应该如何查询我的代码来实现这一点

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'

我建议在卡表上为商户/客户条目设置一个唯一索引。如果你采用这种方法,你可以插入。。。在重复密钥上更新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设置为自身

我建议在卡表上为商户/客户条目设置一个唯一索引。如果你采用这种方法,你可以插入。。。在重复密钥上更新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设置为自身

非常感谢您的回答。将实施它:非常感谢答案。将实施它:D