2013-05-18 229 views
1

我目前正在開發一個數字移動忠誠度應用程序,我必須面對查詢MySQL代碼有問題...麻煩的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* 

我試着寫一個代碼我自己剛纔...可以some1請幫我檢查一下嗎?

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' 

回答

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 
這將不插入新行

更新Card_ID = Card_ID部分僅僅是「不要做任何事情」的別名,因爲它將Card_ID設置爲自身

+0

非常感謝nswer。將實施它:D –