PDA

View Full Version : کمک در نوشتن کوئری



$ M 3 H R D A D $
یک شنبه 01 بهمن 1391, 19:26 عصر
سلام من جدول داریم که توش دسته بندی محتوا و ذخیره میکنم
دسته بندی ها :
آیا میدانید ؟
روانشناسی کودک
دانستنی های ریاضی

اینم بگم دسته بندی هی افزوده میشه و محتوا درون اون هم همینطور

محتوا در این دسته بندی ها قرار میگیره تا اینجا که هیچ
این سیتم میخواد به یک لیست از شماره ها ارسل پیامک کنه و فرهنگ سازی کنه و مطالب ارسال کنه
جدول شماره ها هم که مشخصی هست چیه

حالا من میخوام تو هر سری که قرار پیامک بره :
از دسته های موجود به تصادف یک انتخاب + و از لیست محتواهای آن دسته به تصادف یک انتخاب یک محتوا با شرط اینکه { قبلا برای این شماره ارسال نشده باشه }
پیامک ارسال بشه
یعنی تو یک کوئری

لیست شماره ها متغییر هست یعنی کم و زیاد میشه که کم شدنش مشکلی نداره زیاد شدنش نمیدونم

پیامک در یک دسته بندی خاص حذف بشه مشکل پیش میاد فک کنم آره ؟ اگه هم مشکلی داره حذف نمیشه و غیر فعال میشه مثلا !

من 350 تا شماره که ولی دانش آموز هستند دارم
میخوام هر روز یک مطلب جدید براشون بره مطلب من با اون یکی فرق داشته باشه در روز ! نه اینکه یکی باشه !
پ
حالا اگه همه پیغام ها ارسال شده در یک بازه خاص میتونیم از مطالب قبلی مقلا 2 هفته قبل تر تصادفا باز تکراری ارسال بشه ! اما فک نکنم با احتمال جایگشت هر محتوا در 350 شماره و در دسته بندی های محتلف تمام بشه : دی یک سال پ ساپورت میکنه
روزی 2 تا پیامک ارسال میکنم
دوستان با روش های معمول میشه اما بهینه میخوام

امید امرایی
یک شنبه 01 بهمن 1391, 19:52 عصر
مطمئن نیستم ساختار دیتابیس تون رو درست متوجه شده باشم.
اما فکر می کنم باید 4 جدول داشته باشید که ساختار تقریبیشون به این شکل باشه :


دسته بندی ها cats (شناسه، نام دسته)
محتوا ها contents(شناسه، شناسه دسته، متن محتوا)
شماره موبایل ها mobiles(شماره موبایل، نام، شناسه آخرین محتوا)

اگه بتونید ترتیب شماره گذاری محتوا ها رو رعایت کنید، می تونید از جدول "شماره موبایل ها" یک LEFT JOIN ساده به سایر جداول بگیرید و با شناسه اخرین محتوای ارسال شده برای همون شماره مطابقت بدید.


SELECT * FROM mobiles AS m
LEFT JOIN contents AS c
ON m.last_id+1 = c.id


اما اگر امکان مدیریت ترتیب شناسه ها رو ندارید باید در شرطی که در JOIN استفاده می کنید از یه مجموعه SELECT دیگه برای گرفتن نزدیکترین شناسه بعد از "شناسه آخرین محتوا" استفاده کنید.


اگه متوجه صورت مسئله نشدم به من توضیح بدید لطفا






--------------------------------------
توصیه هایی در دنیای وب و دیجیتال (http://www.amraei.com)

$ M 3 H R D A D $
یک شنبه 01 بهمن 1391, 21:24 عصر
فک کنم من چیز دیگه خواستم
آخرین محتوا در شماره 3 اشتباه باید بشه لیست شناسه ها ارسال شده به این شماره ( که با کاما مثلا به هم وصل شدند )

pani.khoram
یک شنبه 01 بهمن 1391, 21:33 عصر
آقا مهرداد سلام ،
امیدوارم درست متوجه شده باشم ؟
یک پیشنهاد : نمی شه یه فیلد آخرین ارسال اضافه کنی به جدولت ، و در موقعی که ارسال کردید ان رکورد را تاریخش رو ویرایش کنی به امروز و موقع کوری گرفتن شرط تاریخ و زمان قرار بدی ؟؟؟
مثلا رندوم انتخاب کن از جدول به شرط اینکه اخرین ویرایش بزرگ تر از 30 روز گذشته باشه .

$ M 3 H R D A D $
یک شنبه 01 بهمن 1391, 22:07 عصر
آقا مهرداد سلام ،
امیدوارم درست متوجه شده باشم ؟
یک پیشنهاد : نمی شه یه فیلد آخرین ارسال اضافه کنی به جدولت ، و در موقعی که ارسال کردید ان رکورد را تاریخش رو ویرایش کنی به امروز و موقع کوری گرفتن شرط تاریخ و زمان قرار بدی ؟؟؟
مثلا رندوم انتخاب کن از جدول به شرط اینکه اخرین ویرایش بزرگ تر از 30 روز گذشته باشه .

نگرفتم جون تو :گریه:

امید امرایی
یک شنبه 01 بهمن 1391, 22:17 عصر
فک کنم من چیز دیگه خواستم
آخرین محتوا در شماره 3 اشتباه باید بشه لیست شناسه ها ارسال شده به این شماره ( که با کاما مثلا به هم وصل شدند )

من اینطور متوجه شدم که هدف شما جلوگیری از ارسال تکراریه یه محتواست.
در این صورت با "این روش" و یا "جدا کردن با کاما" تغییری در نتیجه ایجاد نمی شه.

اما اگر هدف شما لیست کردن مواردیه که ارسال شده قضیه کمی متفاوته





--------------------------------------
توصیه هایی در دنیای وب و دیجیتال (http://www.amraei.com)

$ M 3 H R D A D $
یک شنبه 01 بهمن 1391, 22:23 عصر
نه هدف همونه که گفتید ارسال غیر تکراری

$ M 3 H R D A D $
یک شنبه 01 بهمن 1391, 22:25 عصر
هدف درست هست ما شما تو اون کوئری چی گفتید ؟ میخوام تصادفی انتخاب بشه اونم برای هر شخص به صورت مجزا

rezaonline.net
یک شنبه 01 بهمن 1391, 22:33 عصر
مهرداد خان جدولات رو بذار با چند تا مثال .

در کل چیزی که میخوای با join و order by rand() قابل پیاده سازی باید باشه فکر کنم .

امید امرایی
دوشنبه 02 بهمن 1391, 10:18 صبح
نمایش بصورت تصادفی نیاز به ساختار و کوئری به مراتب خیلی پیچیده تر داره.
پیشنهاد می کنم محتوا ها رو به ترتیب بفرستید چون تفاوتی در درک مخاطب شما ایجاد نمی کنه. یعنی عملا هیچ اتفاقی نمی افته اگه ترتیبی ارسال بشن.
ضمن اینکه 80% بهره وری بیشتر ارزش صرف نظر از یک امکان فانتزی (و حتی نمیه حیاتی) رو داره.