我目前正在开发一个数字移动忠诚度应用程序,我在查询mysql代码时遇到了问题......
我有4张桌子:Customer, Card, Redemption, Merchant
目前我要做的是,我希望我的系统首先检查客户在兑换时是否拥有某个商家的会员卡
兑换代码将由商家生成...
问题是如何查询我的代码呢?
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'
答案 0 :(得分:1)
我建议在卡表上为商家/客户条目添加唯一索引。如果你采用这种方法,你可以执行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设置为自身