Yani, burada bir sorun (muhtemelen kolay bir tane: P) bulunuyor
Bu benim tablo yapısı:
CREATE TABLE `users_awards` (
`user_id` int(11) NOT NULL,
`award_id` int(11) NOT NULL,
`duplicate` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `award_id` (`award_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Yani bir kullanıcı ödül sistemi bulunuyor. Ben 'yinelenen' alanını neden olan, benim kullanıcıların aynı ödülü birden çok kez verilmesi istemiyorum.
Ben çalışıyorum sorgu (3 ve 2 örnek veri ile) şudur:
INSERT INTO users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1
Yani benim MySQL biraz paslı, ama user_id birincil anahtar olarak ayarlanır, ve award_id Bir UNIQUE anahtar gibi. Bu (tür) istenen etkiyi yarattı.
Kullanıcı 1 ödülü 2 verildiğinde, o girdi. O / o iki kez bu var ise, yalnızca bir satır tabloda olması, ve 1 set olacağını yinelenen. Ve yine, 2, vb olurdu
Kullanıcı 2 ödül 1 verildiğinde, o girdi. O / o iki kez bu var, vs, vs güncellenen yinelenen
Ancak kullanıcı 1 ödül 1 (kullanıcı 2 sonra zaten layık görülmüştür) verildiğinde, (ödülü 1) kullanıcı 2 'nin yinelenen alan artar ve hiçbir şey kullanıcıya 1 eklenir.
Maalesef bu biraz n00bish eğer. Gerçekten yardım takdir!
Kriko