تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 2 از 3 اولاول 123 آخرآخر
نمايش نتايج 11 به 20 از 22

نام تاپيک: جستجو در SQl

  1. #11
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    برای ثبت اطلاعات توی جدول چه طور باید بنویسیم که خودش شماره و کد رو به صورت خودکار بزنه.
    مثلا یه جدول که 3 فیلد داره: code,name,family
    از چه دستوری استفاده کنم که مقدار کد رو خودش بزنه. درحالت پیش فرض اینطور هست :
    insert into table(code,name,family) value(meghdarcode,meghdarname,meghdarfamily)
    این برای وقتی هست که مقدار کد رو ما خودمون میدیم. ولی وقتی میخوام مقدار کد به صورت خودکار و منحصر به فرد باشه باید از چه دستوری برای ثبت اطلاعات استفاده کرد.


    و 1- ما یه جدول حضور داریم که 4 تا فیلد داره : codehozor,tarikh,saat,codekarmand
    توی این جدول کارمندها میان و حضورششون رو اعلام می کنند. و ثبت می کنند.
    من میخوام توی این جول کد 5 کارمندی رو بیشترین حضور رو داشتند رو به دست بیارم.
    مثلا:
    select max(codekarmand) from Table_Hozor
    که توی این روش فقط کد یه کارمند که بیشترین حضور رو داشته رو میده. من میخوام نفر دوم سوم چهارم و پنجم رو هم به دست بیارم. نه اینکه فقط نفر اول از نظر بیشترین حضور رو پیدا کنم.
    2- و یه مورد دیگه که تو این جدول همون طور که میبینید یه فیلد تاریخ هم هست. من میخوام وقتی که کد یه کارمند رو وارد میکنم توی جدول حضور که بهتون گفتم در فیلد تاریخ این کارمند بگرده و تاریخ آخرین حضورش رو بده.
    مثلا کارمندی که کد کارمندی اون 4 هست . 4 تاریخ براش توی این جدول حضورش ثبت شده . میخوام وقتی که عدد 4 رو وارد می کنم از بین اون 4 تا تاریخ تاریخ آخری و جدید تر رو برگردونه.
    3- درمورد سوال سوم هم اینکه همون طور که گفتم یه فیلد تاریخ توی این جدول وجود داره. می میخوام که همه ی این تاریخ ها رو چک کنه و ببینه که کدوم تاریخ بیشتر از همه تکرار شده.(به عبارتی در کدام تاریخ بیشترین حضور زده شده)

  2. #12
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    گرچه تعریف جاری تان هم خیلی دقیق نیست و میتوانید حالات مختلفی را فرض کرد و درنظرگرفت و جواب های مختلفی داد، ولی بحرحال میتوان جوابی داد ...

    از چه دستوری استفاده کنم که مقدار کد رو خودش بزنه
    طریقه معرفی یک ستون برای autonumber را که میدانید؟! باید گزینه identity را در خصایص آن ستون فعال کنید.
    برای دستور insert هم باید کلاً از فیلد مورد نظر صرف نظر کنید، خود سیستم خودکار عدد یکتا را درج میکند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر هم در برنامه نیاز به عدد درج شده دارید و میخواهید کاری روی آن انجام دهید کافی است دستور زیر را فوراً پس از insert اجرا کنید و مقدار آن را بخوانید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    select max(codekarmand) from Table_Hozor
    که توی این روش فقط کد یه کارمند که بیشترین حضور رو داشته رو میده
    مطمئن هستید؟؟؟ چون این کدبظاهر فقط بزرگترین کدکارمندی جدول را برمیگرداند!

    کارمند که بیشترین حضور رو داشته ... من میخوام نفر دوم سوم چهارم و پنجم رو هم به دست بیارم
    تا بیشترین حضور را چی تعریف کنید؟! بیشترین تعداد یا بیشترین زمان؟!
    اگر بیشترین تعداد حضور را لحاظ کنیم، کد زیر شاید بد نباشد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و اگر بیشترین زمان را لحاظ کنیم، خوب باید اطلاعات دقیق تری از نوع تاریخ-زمان شما در دسترس باشید و اینکه اصولاً چرا از نوع واحد datetime برای ذخیره هر دو فیلد مذکور در یک فیلد استفاده نکرده اید و...

    میخوام وقتی که کد یه کارمند رو وارد میکنم توی جدول حضور که بهتون گفتم در فیلد تاریخ این کارمند بگرده و تاریخ آخرین حضورش رو بده
    اگر آخرین تاریخ بزرگترین تاریخ تعزیف کنیم، پس به کد زیر میرسیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر هم بخواهیم ساعت را هم در این تعریف لحاظ کنیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    البته میتوان خود آخرین تاریخ را هم طور دیگری تعریف کرد، مثلاً بزرگترین pmk-autonumber ...

    در کدام تاریخ بیشترین حضور زده شده
    به شرطی که فیلدتاریخ شما حاوی زمان هم نباشد:
    (چون همانطورکه گفتم ذات فیلدهای تاریخ sql زمان را هم میپذیرند که شاید نیاز باشد دستور زیر کمی اصلاح شود.)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشید.
    Last edited by _H2_; 01-08-2012 at 00:39.

  3. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  4. #13
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

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

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثلا خروجی به این صورت میشه :

    کد کارمند : 3 5 3 4
    تعداد : 9 9 8 7 6
    همون طور که میبینی برای کد کارمند جای خالی میمونه.

    و برای اینکه همین کار رو در بین 2 تاریخ انجام بدیم چه طور هست و یا در یک ماه خاص.

    و اینکه من یکم روی کد بالا کار کردم ولی نتونستم کاری کنم که تعداد حضور یه فرد خاص رو به دست بیارم. مثلا تعداد حضور فردی که کد حضورش 3 هست .

    یه مورد دیگه هم اینکه من میخوام میانگین حضور ماهانه رو به دست بیارم . مثلا ما بهش ماه رو میدیم (1391/01) و بعد به دست بیاریم که توی این ماه به طور میانگین چند حضور در روز زده شده.

    و غیبت بیش از 2 روز. کارمندایی که بیش ار 2 روز غیبت دارند(حضوری ثبت نکردند توی جدول Table_Hozor ) رو به دست بیارم.

    چه جوری میشه کاری کرد که نتیجه به دست اومده هم بر اساس تاریخ و هم ساعت مرتب بکنه.
    یعنی اول بر اساس تاریخ بده و بعد بین اون تاریخ ها نتیجه رو بر اساس ساعت مرتب کنه.
    Last edited by shadmehrshadow1; 29-07-2012 at 13:33.

  5. #14
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    ببخشید میدونم زیاد شد. ولی واقعا نیاز دارم. گیر کردم

  6. #15
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اول لازم میدانم یک مورد قبلی را که ناشی از بی دقتی بوده اصلاح کنم و ان اینکه در یکی از دستورات SQL قبلی یک DESC فراموش ده بود که پست قبلی به همین منظور ویرایش شد.

    افراد هنوز کد حضور ندارند و جلوی فیلد کد حضورشون خالی باشه اونوقت وقتی دستور زیر رو استفاده می کنیم توی خروجی یه سطر رو هم برای این افراد در نظر میگیره . چه جوری میشه کاری کرد که دیگه این ها رو هم نشماره و توی خروجی نده
    ....
    همون طور که میبینی برای کد کارمند جای خالی میمونه
    ساده است شرط بگذارید فلان فیلد خالی نباشد.
    البته یک چیز را درست متوجه نشدم ....
    در بالا شما به "کدحضور" اشاره کردید ولی بعدش گفتید "کدکارمند" خای خالی خواهد داشت!
    بالاخره "کدحضور" میتواند خالی باشد یا "کدکارمند" ؟ اصلاً "کدکارمند" معنی دارد خالی باشد؟

    تعداد حضور فردی که کد حضورش 3 هست
    باز هم همان مشکل قبلی به نوعی اینجا هم وجود دارد؟ احتمالاً منظورتان "کدکارمند" نبوده؟ مگر موجودیت "کارمند" با کلید "کدکارمندی" اش شناسایی نمیشود؟ پس نباید بگوییم کارمندی با کد کارمندی فلان؟
    اگر منظور کدکارمندی باشد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثلا ما بهش ماه رو میدیم ...
    همانطورکه قبلاْ هم اشاره کردم، اطلاعات ارائه شده شما برای پاسخ این سوال کافی نیست، باید نوع و فرمت فیلد تاریخ شما مشخص شود.
    نقل قول نوشته شده توسط _H2_
    >>باید اطلاعات دقیق تری از نوع تاریخ-زمان شما در دسترس باشید و اینکه اصولاً چرا از نوع واحد datetime برای ذخیره هر دو فیلد مذکور در یک فیلد استفاده نکرده اید و...
    غیبت بیش از 2 روز
    اگر فقط همین باشد قابل پاسخ دادن است ولی حتماً منظورتان "غیبت بیش از 2 روز در ماه" بوده که در این صورت همچنان باید مورد قبلی روشن شود.


    چه جوری میشه کاری کرد که نتیجه به دست اومده هم بر اساس تاریخ و هم ساعت مرتب بکنه
    ORDER BY

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

    موفق باشید.
    Last edited by _H2_; 01-08-2012 at 00:37.

  7. #16
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    ساده است شرط بگذارید فلان فیلد خالی نباشد.البته یک چیز را درست متوجه نشدم ....در بالا شما به "کدحضور" اشاره کردید ولی بعدش گفتید "کدکارمند" خای خالی خواهد داشت!بالاخره "کدحضور" میتواند خالی باشد یا "کدکارمند" ؟ اصلاً "کدکارمند" معنی دارد خالی باشد؟
    بله درسته منظورم کد کارمند بود.
    یه مورد دیگه هم اینکه من میخوام میانگین حضور ماهانه رو به دست بیارم . مثلا ما بهش ماه رو میدیم (1391/01) و بعد به دست بیاریم که توی این ماه به طور میانگین چند حضور در روز زده شده.
    من ماه رو از نوع متن nvarchar قرار دادم. برای اینکه تاریخ شمسی رو بتونم ذخیره کنم. به نظرتون اگه از نوع datetime استفاده کنم بهتره ؟ که قبل از ثبت اطلاعات اون رو به میلادی تبدیل کنم تا میلادی ثبت بشه و موقع دریافت اطلاعات اون رو دوباره به شمسی تبدیل کنم.
    اگر فقط همین باشد قابل پاسخ دادن است ولی حتماً منظورتان "غیبت بیش از 2 روز در ماه" بوده که در این صورت همچنان باید مورد قبلی روشن شود.
    بله در ماه . شما به نظرتون از چه نوع فرمتی استفاده کنم بهتره؟ همون رو بگید من تغییر میدم.
    ORDER BYشاید بد نباشد جهت تکمیل اطلاعات و حل مشکلاتتان به طور زیرساختی با مفاهیم دیتابیس های رابطه ای و زبان SQL کتابهایی یا حداقل کتابی کامل) در این خصوص تهیه و مطالعه کنید.بارها گفته ام که این تالارهای گفتگو فقط برای رفع اشکال موثر هستند و البته در این مورد خیلی خوب موثر هستند ولی برای یادگیری چندان ارزشی ندارند و برای یادگیری هیچ چیزی جای کتابها را نمیگیرد.
    منم خیلی دوست دارم بتونم یه کتاب خوب پیدا کنم. ممنون میشم اگه سراغ دارید معرفی کنید . مخصوصا اگه نسخه الکترونیکی یا PDF اون موجود باشه . ممنون

  8. #17
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    سلام یه موردی هست خیلی وقته درگیرش هستم اینه که وقتی کانکشن رو به صورت زیر تعریف می کنم میتونم از توی دیتابیس داده ها رو بخونم ولی ولی وقتی داده ای رو به دیتابیس اضافه می کنم به طور موقت ذخیره میشه و بعد از خروج از برنامه به حالت اول برمیگرده و اطلاعاتی که ذخیره کرده بودم دیگه نیست.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و مجبور میشم که به صورت زیر تعریف کنم تا کار بکنه.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یعنی آدرس رو دستی بدم بهش.چرا این طور میشه. چیکار باید بکنم؟

  9. #18
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    منظورم کد کارمند
    یعنی چطور؟ چطور کارمندی است که کد کارمندی ندارد؟ مگر "کدکارمندی" کلید جدول "کارمندان" نیست؟ پس چطور میتواند خالی باشد؟

    برای اینکه تاریخ شمسی رو بتونم ذخیره کنم. به نظرتون اگه از نوع datetime استفاده کنم بهتره ؟
    به نظرتون از چه نوع فرمتی استفاده کنم بهتره؟
    از دیدگاهی سوال سختی است ولی شخصاً و مطمئناً datetime را ترجیح میدهم، برای تبدیلاتش هم میتوان کنترل های سفارشی تولید کرد و همچنین امکان پشتیبانی تاریخ شمسی در خود دستورات SQL هم وجود دارد ... !
    شاید در نگاه اول سخت تر و پیپیده تر بنظر برسد و ساخت بستر اولیه پشتیبانی کامل تبدیلات شمسی هزینه زمانی اش زیاد بنظر برسد ولی هرچقدر پروژه بزرگ تر شود این هزینه زمانی کوپکتر شده و قابلیت هایش بیشتر رخ نشان میدهند...
    و...
    و...


    ...یه کتاب خوب پیدا کنم. ممنون میشم اگه سراغ دارید معرفی کنید
    از بین کتاب های SQL ای که خواندم مورد زیر بنظر جالب تر می آمد.
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    یعنی آدرس رو دستی بدم بهش. چرا این طور میشه. چیکار باید بکنم؟
    خیر نیازی نیست.
    همان رشته اتصال اولی سالم و صحیح و بدون مشکل است.

    مشکل شما ناشی از اجرای برنامه از درون VS است.
    VS با هر کامپایل همانطورکه فایل exe جدیدی می سازد یک نسخه از فایل DBName.mdf خالی شما را هم برداشته و کپی کرده و در کنار exe جدید تولید شده قرار میدهد.
    در نتیجه هربار که با VS برنامه را اجرا میکنید (اگر موجب کامپایل مجدد شود که اغلب میشود) فایل جدیدی را در کنار exe استفاده میکند و با اجرای بعدی هم فایل قبلی حذف میشود.

    اگر شما برنامه تان را کامپایل کند و بدون VS، خودتان مستقیم exe را اجرا کنید، متوجه میشوید که مشکلی نخواهید داشت.
    موفق باشید.

  10. #19
    پروفشنال shadmehrshadow1's Avatar
    تاريخ عضويت
    Oct 2009
    پست ها
    842

    پيش فرض

    یعنی چطور؟ چطور کارمندی است که کد کارمندی ندارد؟ مگر "کدکارمندی" کلید جدول "کارمندان" نیست؟ پس چطور میتواند خالی باشد؟
    كد حضور كليد جدول حضور است. خب شايد كارمندي تازه اومده باشه و هنوز به هر دليلي كد نداشته باشه .
    يه جوري اين مشكل رو حل كردم و فقط روي غيبت بيش از دو روز موندم.


    از بین کتاب های SQL ای که خواندم مورد زیر بنظر جالب تر می آمد.
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    خيلي ممنون حتما تهيه اش مي كنم.

    اي كاش نسخه Pdf هم داشت.

  11. #20
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    میبخشید کمی مشغله داشتم و از بحث خارج شدیم ...
    كد حضور كليد جدول حضور است. خب شايد كارمندي تازه اومده باشه و هنوز به هر دليلي كد نداشته باشه .
    يه جوري اين مشكل رو حل كردم و فقط روي غيبت بيش از دو روز موندم.
    جدول ها و موجودیت های شما باید کلید یکتا داشته باشند.
    ضمن اینکه در شرکت هم منطقی نیست کارمندی کار کند ولی کدکارمندی نداشته باشد.
    یکی از بهترین روش های طراحی دیتابیس میتوانید چنین باشد که همه جداول و موجودیت های شما یک کلید PrimaryKey از جنس Autonumber داشته باشند و خود SQL Server خودکار عددی یکتای غیر تکراری تخصیص دهد.
    و شما هم از همین برای primarykey ها و foreign key ها و delete و update و select و... و... استفاده کنید.
    یعنی در تمام رگ های برنامه تان این کلیدهای یکتای غیر قابل تغییر autonumber جریان داشته باشند ولی هیچ کجا ان ها را به کاربرتان نشان ندهید!!!

    اگر کاربر به کدکارمندی، کدملی، شماره نامه، کدفاکتور و.... نیاز دارد، مثل سایر فیلدهای یک فیلد هم برای این کار اضافه کنید! ولی برنامه تان بر این اساس کار نکند.
    اینطوری اگر کدی را کاربر اشتباه زد و بعداً خواست تغییر دهد یا مثلاً فعلاً شماره کد ملی کسی را نداشت، مشکلی برای برنامه شما ایجاد نمیشود و برنامه شما به دقت و صحت کار خود را انجام میدهد.

    در واقع شما از primarykey های قوی و readonly خودتان استفاده میکنید و به کاربر هم فیلدهایی که میخواهد را میدهید!
    موفق باشید.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •