Ben yeni bir öğe veritabanına eklendiğinde gönderilen bir e-posta bildirimleri sistemi oluşturmak için çalışıyorum.
Kullanıcılar, e-posta adresinizi vererek ve aşağıda onların tercihlerini seçerek kayıt -
Color [n/a, pink, red, blue, and green]
Shape [n/a, square, rectangle, and circle]
width [n/a, narrow, wide]
Bunların hepsi açılan listeleri vardır.
Bir kullanıcı olarak kırmızı rengini seçer ve n gibi diğer bütün seçenekleri bırakır Yani / a, o zaman onlar gibi kırmızı renk olan herhangi bir yeni öğe için bildirimleri almak istedim anlamına gelecektir. Onlar seçerseniz Colore = kırmızı ve Shape = daire, onlar daire olarak kırmızı rengini ve şeklini yalnızca bu öğeler için bildirimleri almak istiyorum.
Ürün tablo
id, color, shape, width, height, name, description, image
örnek satırlar
1, red, circle, narrow, tall, ABC, ABC Descrip, yellowFlag.jpg
2, blue, circle, wide, short, XYZ, XYZ Descrip, redFlag.jpg
Bildirimler tablo
id, email, color, shape, width
örnek satırlar
1, test@dummy.org.uk, red, 0, 0, 0
2, xyz@alpha.com, blue, circle, 0
3, abc@abcdef.com, pink, square, wide
Bir kullanım seçimlerden herhangi seçebilirler. Örneğin, aşağıda, onlar seçebilirsiniz
color = red, shape = 0, width = 0 [0 is n/a, selected red only]
color = 0, shape = square, width= 0 [selected shape only]
color = 0, shape = 0, width= 'narrow' [selected width only]
color = red, shape = square, width= 0 [selected both color and shape but not width]
color = 0, shape = square, width= 'narrow' [selected both shape and width but not color]
color = red, shape = square, width= narrow [selected all 3 options]
color = red, shape = 0, width= narrow [selected color and width but not shape]
My questions are - If I add number 2 item (above in item table) into DB, I want to send notifications to the users who have a match in notifications table. The only way to query notifications table I can think of is something like
1. SELECT email FROM notifications WHERE color = 'blue', shape = '0', '0'
2. SELECT email FROM notifications WHERE color = 'blue', shape = 'circle', '0'
3. SELECT email FROM notifications WHERE color = 'blue', shape = 'circle', 'wide'
4. SELECT email FROM notifications WHERE color = '0', shape = '0', 'wide'
5. SELECT email FROM notifications WHERE color = 'blue', shape = 'circle', '0'
6. SELECT email FROM notifications WHERE color = 'blue', shape = 'circle', 'wide'
... Ve benzeri
Bu, etkisiz bir yöntemdir. Ayrıca seçeneklerin şimdi sayısının olarak (renk, şekil, genişlik) 3 ama seçeneklerin başka bir çift eklemek varsa hepsi (benim alongwith) deli gidecek. Uygulama zaten vb iş uyarılar gibi bunu yapmanın çok olduğu gibi bunu başarmak için daha iyi bir yolu bu yönetmek bana daha iyi bir alternatif / fikrim yok önerebilir miyim gerekir. Ben bu yüzden herhangi bir fikir bekliyoruz tablolar vs herhangi bir sorun değişen yapısı yok. Herhangi bir sorunuz varsa, lütfen sorunuz. Ben yardım için teşekkür ederiz.
Bir ton teşekkürler.