我有兩個表,簡化爲以下組合填充的表格:由頂n行從其他兩個表
users:
+-----+------+-----------+
| id | name | timestamp |
+-----+------+-----------+
vouchers:
+-----+------+
| id | code |
+-----+------+
我也有一個第三表,將含有ID的對:
recipients:
+-----+------+------+
| id | u_id | v_id |
+-----+------+------+
當用戶的行超過兩週時(查詢將計劃每天運行一次),我需要定期向收件人表中插入新的ID對。不應檢索收件人表中已存在的ID。
我現在無法找到兩個初始SELECT查詢返回的任意配對ID的一種有效的方法:
1. SELECT id FROM users WHERE date < NOW() - INTERVAL 2 WEEK AND id not in (select u_id from recipients)
2. SELECT id FROM vouchers WHERE id not in (select v_id from recipients) limit *by number of retrieved user IDs*
到目前爲止,我試圖加入的都未能達到預期的效果。我已經使用上述兩個查詢建立了解決方案,使用PHP for循環將插入前的結果配對,但我很清楚這很糟糕。
由於提前,
目前尚不清楚你添加了哪些對。對於大於2周大的每個用戶,是否爲系統中的每個*未分配的憑證添加一個收件人對? – 2012-01-30 12:18:16
不,你在談論笛卡爾產品?每個用戶配對與每張優惠券配對?下面的比喻可能會有所幫助:用戶排在隊列中,前面的那些人可以通過旋轉式,並在他們通過時獲得單一憑證。 – user1177756 2012-01-30 12:44:17