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

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




صفحه 3 از 3 اولاول 123
نمايش نتايج 21 به 22 از 22

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

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

    پيش فرض

    مرسی. خیلی ممنون
    اگه بخواهیم ببینیم که آیا یک کارمند در یک ماه خاص مثلا 1391/05 چند روز ش رو حضوری در جدول حضور ثبت نکرده چه باید کرد.

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

    پيش فرض

    سلام
    همانطور که گفتم این مورد میتواند حالت های مختلف داشته باشد ...

    ==============

    روش اول:
    بهترین حالت آن است که جدول ویژه ای برای کارکرد ماهیانه افراد (طبیعتاً با یک کلید یکتا) داشته باشید.
    یعنی یک سطر برای هر فرد در ماه.
    این جدول یتواند ضمن بایگانی اطلاعات کامل فیش حقوقی فرد در آن ماه، معیار مشخصی برای جدول یک به چند دیگری باشد که به حضور و مرخصی و غیبت اشاره میکند.
    همانطورکه اشاره شد جدول دیگری میتواند شامل رابطه یک به چند فوق باشد که موارد رخ داده به راحتی قابل ردگیری در ماه مربوطه هستند.

    و...

    ==============

    روش دوم:
    فقط از یک جدول برای ثبت این وقایع استفاده کنید و فیلد تاریخ تان از نوع استاندارد datetime باشد.
    طبیعتاً در این حالت نیاز به تبدیل تاریخ درون خود SQLServer دارید.
    با اجرای فایل sql زیر درون دیتابیس تان، توابع کامل هجری شمسی به SQLServer افزوده خواهد شد.
    Pr_AddMonths
    Pr_GetDayOfYear
    Pr_GetDayOfMonth
    Pr_GetMonth
    Pr_GetYear
    Pr_GetDaysInMonth
    Pr_IsLeapYear
    Pr_IsValid
    Pr_ToDateTime
    و...
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    (احتمالاً لینک در آینده ویرایش خواهد شد)

    مراحل نصب تاریخ شمسی در دیتابیس SQLServer:
    1) اجرای GHDiamond.Sql.CLREnabled.sql
    2) ریست سرویس SQLServer یا ریست رایانه
    3) اجرای GHDiamond.Sql.Install.sql

    البته بسته فوق شامل یک دیتابیس نمونه خالی هم است که فقط نیازی به اجرای مرحله (3) در فهرست فوق ندارد.

    سپس میتوانید با تابع Pr_GetYear سال شمسی و با تابع Pr_GetMonth ماه شمسی را از datetime درون خود SQLServer استخراج کنید.
    مثلاً دستور زیر میتواند تعداد سطرهای وابسته به هر فرد در هر ماه شمسی را باز گرداند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و...

    ==============

    روش سوم:
    فقط از یک جدول برای ثبت این وقایع استفاده کنید و از نوعی فیلد تاریخ شمسی استفاده کنید.
    مثلاً ذخیره سال و ماه در دو فیلد عددی مستقل...
    یا بهتر از آن ذخیره تعداد ماه های گذشته از اول هجرت ...
    (Y*12+M-1 عدد 16697 برای شهریور 1391 و...)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و...

    احتمالاْ بدترین حالت هم آن است که تاریخ را بصورت string شمسی ذخیره کنید. مثلاْ "1391/06/01"
    اینطور هم باز میتوانید با دستور زیر مشکلتان را حل کنید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و...

    ==============

    البته کدهای فوق را میتوان برای بازدهی بیشتر بهینه تر نوشت.
    همانطورکه قبلا گفتم پاسخ این مسئله وابستگی به ذات نحوه ذخیره سازی تاریخ شما و مواجه با آن دارد.
    روش تان را انتخاب کنید، باز اگر مشکلی بود بفرمائید.
    موفق باشید.

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


صفحه 3 از 3 اولاول 123

Thread Information

Users Browsing this Thread

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

User Tag List

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

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