應用目標基於另一行
通過GCM零售商將消息發送到註冊用戶的移動
DB架構
我有一個customers
表和價值選擇行相關customers_realtions
表與下列字段:id
,customerID
, retailerID
,isBlocked
所需取得的成果
客戶可以針對特定的零售商登記,或通配符(所有的)。
如果向所有零售商註冊,他可以選擇阻止特定零售商發送未來消息,從而有效創建黑名單。
對各狀態
- DB值。當用於單個零售商
retailerID
客戶寄存器被分配與零售商ID。 - 當用戶註冊的所有零售商
retailerID
的等於1 當顧客塊零售商有兩種選擇:
一個。如果他在
isBlocked
字段更新爲1(true)之前註冊到此特定零售商b。如果他註冊的所有零售商都爲這個零售商之前創建一個新的行和
isBlocked
設置爲1(真)
挑戰
當發送消息的SELECT查詢應包括客戶擁有的1 retailerID和不已發送retailerID
當isBlocked
等於1
例如,在這種情況下
id customerID retailID isBlocked
129 46 111 1
128 46 1 0
我不想即使retailerID是111
我嘗試
SELECT * FROM customers_relations
WHERE
(retailID=111
OR
(retailID=1
AND
(SELECT isBlocked FROM `customers_relations` WHERE customerID=46 AND retailID=111)=0))
AND
NOT isBlocked
問題
雖然這工作了要選擇的客戶單身客戶,我事先知道身份證,我正在努力想出一種爲多個客戶編寫類似查詢的方法。
如果用戶多次封鎖和取消阻止零售商,會發生什麼情況?有多少行被創建? –
顯然該行是在用戶之前沒有註冊到該特定零售商時創建的,即,如果他登記了所有零售商。如果他註冊了特定的零售商,「isBlocked」的值就會相應更新。 – Matanya
。 。在你對系統工作原理的描述中看第(3)步。它明確指出,當零售商被封鎖時會創建一個新行。這就是我問這個問題的原因。我的答案中的第一個查詢應該是正確的。 –