$ M 3 H R D A D $
شنبه 15 تیر 1392, 22:23 عصر
سلام
من جدول کاربران دارم که توش تاریخ expire شدن عضویتشون قید شده و همچنین سایر مشخصات مثل شماره همراه و ایمیل
جدول دیگه ای دارم به نام گروه بندی که توش آیدی منحصر به فرد هست
جدول دیگه دارم به نام پیامک ها که توش قید میشه این پیامک از کدوم دسته بندی هست (category_id)
جدول آخر هم اسمش log هست
جداول و اکسپورت کردم در پست قرار دادم :
حالا میخوام cron job من یک query به بانک بده و لیست کل کاربران که هنوز expire نشدند را به همراه یک پیامک که قبلا براشون ارسال نشده ( با توجه به نبود اون پیام در جدول log ) و اونم از یک گروه بندی تصادفی انتخاب کنه ( خود پیام هم تصادفی انتخاب بشه )
مشکلات موجود :
یک سری پیامک لیست میشند که قبلا برای کاربر خاص ما ارسال نشده اما دسته بندی که به صورت تصادفی انتخاب میشه با دسته بندی پیامک های پیدا شده برابر نیست و null میده که اینجا و باید مدیریت کنیم که یا دوباره بده یا یک روش دیگه
مشکل بعد اینه که یک موقع برای یک کاربر همه پیامک ها ارسال میشه اون موقع باید بیاد از جدولlog قدیمی ترین پیامک ها و لیست کنه و از بین اونا دوباره ارسال کنه یا اینکه گذارشی و جا ای ثبت کنه که پیامک ها تموم شدند
من هرچی کد نوشتم نتیجه نداد خیلی جا ها مشل داشتم
لطفا راهنمایی کنید
اینم از کد ها که اکثرا با مشکل هستند :
SELECT * , (SELECT id FROM `category` WHERE 1 ORDER BY rand() LIMIT 0 , 1) AS 'cat_each', ( SELECT id FROM `sms`
WHERE (category_id = cat_each) and id not in(select sms_id from log where user_id=users_info.id and 'sms_id' is not null) ORDER BY rand( ) LIMIT 0 , 1)
AS 'sms_id' FROM users_info
SELECT text from sms WHERE id not in (select sms_id FROM log where user_id=users_info.id)
select *,(SELECT 'text' from sms WHERE id not in (select sms_id FROM log where user_id=users_info.id)) from users_info
and )
select text from sms inner join log on sms.id = log.sms_id
SELECT * FROM `sms` WHERE `id` NOT IN ( SELECT `sms_id` FROM `log` WHERE `user_id`=37 )
من جدول کاربران دارم که توش تاریخ expire شدن عضویتشون قید شده و همچنین سایر مشخصات مثل شماره همراه و ایمیل
جدول دیگه ای دارم به نام گروه بندی که توش آیدی منحصر به فرد هست
جدول دیگه دارم به نام پیامک ها که توش قید میشه این پیامک از کدوم دسته بندی هست (category_id)
جدول آخر هم اسمش log هست
جداول و اکسپورت کردم در پست قرار دادم :
حالا میخوام cron job من یک query به بانک بده و لیست کل کاربران که هنوز expire نشدند را به همراه یک پیامک که قبلا براشون ارسال نشده ( با توجه به نبود اون پیام در جدول log ) و اونم از یک گروه بندی تصادفی انتخاب کنه ( خود پیام هم تصادفی انتخاب بشه )
مشکلات موجود :
یک سری پیامک لیست میشند که قبلا برای کاربر خاص ما ارسال نشده اما دسته بندی که به صورت تصادفی انتخاب میشه با دسته بندی پیامک های پیدا شده برابر نیست و null میده که اینجا و باید مدیریت کنیم که یا دوباره بده یا یک روش دیگه
مشکل بعد اینه که یک موقع برای یک کاربر همه پیامک ها ارسال میشه اون موقع باید بیاد از جدولlog قدیمی ترین پیامک ها و لیست کنه و از بین اونا دوباره ارسال کنه یا اینکه گذارشی و جا ای ثبت کنه که پیامک ها تموم شدند
من هرچی کد نوشتم نتیجه نداد خیلی جا ها مشل داشتم
لطفا راهنمایی کنید
اینم از کد ها که اکثرا با مشکل هستند :
SELECT * , (SELECT id FROM `category` WHERE 1 ORDER BY rand() LIMIT 0 , 1) AS 'cat_each', ( SELECT id FROM `sms`
WHERE (category_id = cat_each) and id not in(select sms_id from log where user_id=users_info.id and 'sms_id' is not null) ORDER BY rand( ) LIMIT 0 , 1)
AS 'sms_id' FROM users_info
SELECT text from sms WHERE id not in (select sms_id FROM log where user_id=users_info.id)
select *,(SELECT 'text' from sms WHERE id not in (select sms_id FROM log where user_id=users_info.id)) from users_info
and )
select text from sms inner join log on sms.id = log.sms_id
SELECT * FROM `sms` WHERE `id` NOT IN ( SELECT `sms_id` FROM `log` WHERE `user_id`=37 )