ورود

View Full Version : یه دستور SQL



RealDream
چهارشنبه 29 فروردین 1386, 07:29 صبح
فرض کنیم من 100 نفر مشتری دارم و از اینها می خوام در مورد 10 محصول شرکتم در یک نظر سنجی شرکت کنن . هر وقت که کاربر وارد سیستم میشه بطور تصادفی نظر سنجی محصولی رو بهش نشون بده که قبلا درباره اون، فرم نظر سنجی رو تکمیل نکرده . جدولی دارم که کد کاربر و شناسه محصول رو نگهداری می کنه و میگه که کی در چه نظر سنجی شرکت کرده . جدول دیگری هم هست که مشخصات محصول رو نگهداری می کنه که رکورد تصادفی باید از این جدول خارج بشه و پاسخ ها رو هم در جدول سومی نگهداری می کنم . حالا می خوام ببینم یه دستور ساده SQL هست که من بتونم رکورد محصولی رو برای کاربر جاری نمایش بدم که تا الان در نظر سنجی اون محصول شرکت نکرده ؟
بانک اطلاعاتی : Access
زبان برنامه نویسی : VB
ممنون دوستان :تشویق:

rezaasp.net
چهارشنبه 29 فروردین 1386, 09:10 صبح
بله با یک datagerid و یک sql می توانی این را درست کنی .در جدول کاربر یک ستون درست کن که string باشد هر دفعه که کاربر کالا را می بیند کد کالا تو این ستون بیاید و فرم نظر خواهی بربش بیاید.چنانچه این کالا را قبلا" دیده باشد برای او دیگر فرم نیاید ( با چک کردن کدهایکه در ستون مورد نظر درست کردی)

RealDream
چهارشنبه 29 فروردین 1386, 10:06 صبح
بله با یک datagerid و یک sql می توانی این را درست کنی .در جدول کاربر یک ستون درست کن که string باشد هر دفعه که کاربر کالا را می بیند کد کالا تو این ستون بیاید و فرم نظر خواهی بربش بیاید.چنانچه این کالا را قبلا" دیده باشد برای او دیگر فرم نیاید ( با چک کردن کدهایکه در ستون مورد نظر درست کردی)

ضمن تشکر
من میدونم شدنیه فقط میخوام دستور SQL رو بدونم . فکر کنم سرعتم بره بالا اگه از SQL استفده کنم باید شرط جستجو یه زیر دستور باشه منتها من که فکرم به جایی نمی رسه

RealDream
پنج شنبه 30 فروردین 1386, 15:28 عصر
کسی نمیتون تو این زمینه کمک کنه ؟ دوستانی که SQL ‌کار کردن ...

‍Peter Norton
جمعه 31 فروردین 1386, 01:33 صبح
اسم جدول محصولات رو tblProduct و جدول ارتباط محصول و کاربر را tblRelation می گذارم حالا:

Select top 1 * from tblProduct Where ProductID Not In (Select ProductID From tblRelation Where UserID=xxxx)

در این دستور userID نام فیلد مرتبط با کاربر است و xxx باید توسط برنامه حاوی کد کاربر وارد شده باشد. productID هم نام ستون شناسه جدول محصولات می باشد

Armin62
جمعه 31 فروردین 1386, 02:41 صبح
ببین دوست من شما برای این کار باید از select های تو در تو استفاده کنی من برات مثالی میزنم
در این مثال ما یک فایل اکسس داریم با سه جدول
1- نام کالا ===Kala
2- نام کاربران ===Karbar
3 - حاصل نظر سنجی===Sanjesh

حالا مثلا اطلاعاتی در این جدولها ثبت شده و ما میخوایم که در این برنامه تمام کالاهایی رو که در جدول Kala وجود داره نمایش بدیم به شرط اینکه کاربر فعال برنامه تا کنون این کالا ها رو ندیده باشه (این دست خودته اگه بخوای به صورت تصادفی یکی از اونها نمایش داده بشه )
برای این کار فقط دو شرط کافیه
اینکه تمام کالا هایی رو نمایش بدیم که در جدول Sanjesh وجود ندارند و برای کاربر فعال نمایش داده نشده

با مثال زیر به طور کامل منظورم رو متوجه میشی.

RealDream
جمعه 31 فروردین 1386, 12:12 عصر
از آرمین عزیز و پیتر نورتون سپاسگزارم .
حالا اگه بخوایم از بین این محصولات یکی رو رندم انتخاب کنیم با همون شرایط چیکار کنیم
دستور Top 1 خوبه اما در مورد تصادفی دراوردنش موندم . ممنون میشم این تیکه هم به دستور بالایی اضافه بشه

Armin62
جمعه 31 فروردین 1386, 21:39 عصر
به برنامه کلیدی به نام Random اضافه کردم فکر کنم مشکلت حل بشه

‍Peter Norton
جمعه 31 فروردین 1386, 23:06 عصر
از فرمول زیر در کدت استفاده کن :
Cast((Max(ProductID) -Min(ProductID) + 1) * Rand() + Min(ProductID) as int)

من معمولاً سعی می کنم به جای جواب سئوال راهنمایی مفیدی بکنم. امیدوارم بتونی با استفاده از این کد کارتو راه بندازی. اگر فکر کردی ولی نتونستی بگو تا کاملشو برات بذارم.

RealDream
یک شنبه 02 اردیبهشت 1386, 15:33 عصر
دوستان ممنون