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

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




نمايش نتايج 1 به 5 از 5

نام تاپيک: معرفي دستورات بازيابي و تلفيق جداول و رسم نمودار در sql

  1. #1
    داره خودمونی میشه farman-h's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    171

    پيش فرض معرفي دستورات بازيابي و تلفيق جداول و رسم نمودار در sql

    با سلام خدمت دوستان
    لطفا هر چي در مورد دستورات بازيابي و تلفيق جداول و رسم نمودار در sql ميدونيد كمك كنيد ممنون.

  2. #2
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض دستورات بازیابی

    برای بازیابی داده ها در SQL باید یک تقاضا ایجاد کرد.
    تقاضا در شکل کلی خود با دو روش ایجاد می شود:
    الف - استفاده از Query که از بحث ما خارج است
    2- استفاده از دستور Select

    >> استفاده از دستور Select
    شکل کلی دستور Select بصورت زیر است:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> تغییر عنوان فیلدها
    با استفاده از دستور SELECT می توان عنوان فیلدها را تغییر داد.
    مثلا کد زیر فیلد Name را به FirstName تغییر می دهد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> استفاده از String در عنوان دستور SELECT
    این کار معمولا خوانایی خروجی دستور Select رو افزایش میده.
    مثلا کد زیر عبارت Name Is رو به تمام رکوردها اضافه می کند:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> بازیابی رکوردهای مورد نظر
    برای انتخاب رکوردهایی به کار میره که با شرط ما سازگاری و همخوانی دارند.
    مثلا کد زیر نامهایی رو انتخاب میکنه که حرف S در اون نامها وجود داشته باشه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> مرتب سازی داده ها
    میتوان در هنگام بازیابی داده ها ، آنها را Sort کرد.
    مثلا کد زیر تمام نامها رو بازیابی میکنه و اونها رو به ترتیب نزولی مرتب میکنه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> حذف فیلدهای تکراری
    از بازیابی رکوردهای تکراری می توان صرف نظر کرد.
    کد زیر را ببینید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    >> گروه بندی فیلدها
    می توان رکوردهای بازیابی شده را گروه بندی ( تلخیص ) کرد. در این حالت معمولا هدفی نهفته است. مثلا میخواهیم تعداد نامها رو بر اساس شرط بشماریم.
    مثلا کد زیر تمام نامهایی را که دارای حرف S هستند رو بازیابی میکنه و در رکوردهای بازیابی شده، نامها رو به تفکیک تعداد مشخص میکنه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر برای این تلخیص، خواهان اعمال شرط نیز هستید میتونید عبارت Having رو هم به انتهای کد اضافه کنید و شرط مورد نظر رو بنویسید.

    >> استفاده از توابع:
    توابع برای تامین هدفی خاص و معمولا در همراهی با Group By به کار می روند.
    مثلا عبارت زیر مجموع نمرات هر دانشجو را برمیگرداند:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    توابع مهم عبارتند از:
    AVG , COUNT, MAX, MIN, STDEV, STDEVP, SUM, VAR,VARP




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


  4. #3
    آخر فروم باز shalineh's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    فعلا ایران
    پست ها
    1,033

    پيش فرض دستورات تلفیق

    تلفیق برای بازیابی اطلاعات از چندین جدول بکار میره. مثلا شما فرض کنید یک جدول داریم که نام دانشجوها رو در اون ذخیره کردیم. یک جدول هم داریم که واحدهایی که دانشجویان در این ترم انتخاب کرده اند رو ذخیره کرده ایم. مشخص است که یک دانشجو میتونه بیش از یک واحد انتخاب کنه و هر واحد هم میتونه توسط بیش از یک نفر انتخاب شده باشه.
    خب، حالا میخواهیم واحدهایی که توسط دانشجوی X انتخاب شده رو ، بازیابی کنیم. در این حالت دو راه داریم:
    1- بررسی تک تک فیلدها و شرط گذاری برای آنها ، تا نهایت تمام واحدهایی که یک یا چند دانشجوی مشخص ( معلوم الحال ) انتخاب کرده اند رو بازیابی کنیم. یه لحظه فکر کن. مثلا در دانشگاهی به عظمت دانشگاه تهران، بررسی این فیلدها بصورت مجزا ، چقدر زمان بر خواهد بود.
    2- استفاده از دستورات تلفیق یا همون JOIN ( بهترین و در واقع مطمئن ترین راه )

    پنج روش متداول تلفیق ، در SًًQL عبارتند از :

    1- تلفیق Equi Join
    تساوی فیلدها رو بررسی میکنه. یعنی چه؟ یعنی فقط فیلدهایی بازیابی خواهند شد که مقدار آنها در جدولهای مختلف برابر باشه.
    یه مثال میزنم. دو تا جدول داریم. جدول1 و جدول2 .
    در جدول 1 دو تا فیلد داریم. فیلد شماره دانشجویی (S_Num) و فیلد نام دانشجو (Name).
    در جدول 2 هم سه تا فیلد داریم. فیلد شماره دانشجویی (S_Num) و نام درس ( Study ) و نمره ( Grade).
    برای بازیابی نمرات هر دانشجو از این دو جدول باید کدی مثل کد زیر نوشته بشه:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    2- تلفیق Natural
    این هم تساوی فیلدها رو بررسی میکنه اما ...
    اما فقط رکوردهای غیر تکراری بازیابی خواهند شد. باید به جای علامت تساوی ، علامت <> قرار دهیم.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    3- تلفیق Cross Join
    تمام رکوردهای جدولها بازیابی خواهند شد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    4- تلفیق Outer Join
    تمام فیلدهای یک جدول و بخشی از فیلدهای جدول دیگر را بازیابی میکند. و سه نوع دارد:
    Left Outer Join = بازیابی تمام رکوردهای جدول اول و رکوردهایی از جدول دوم که با جدول اول سازگارند.
    Right Outer Join = بازیابی تمام رکوردهای جدول دوم و رکوردهایی از جدول اول که با جدول دوم سازگارند.
    Full Outer Join = بازیابی تمام رکوردهای سازگار جدول اول و دوم.

    مثال:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    5- تلفیق Self Join
    جدول رو با خودش تلفیق میکنه. به چه دردی میخوره؟ خب ، معمولا برای پیدا کردن رکوردهای تکراری یک جدول بکار میره. ( نقطه مقابل دستور DISTINCT - که در پست قبل توضیح دادم) . در این الحاق حتما باید از نامهای مستعار استفاده کرد. ( یعنی جدول رو به دو جدول مستعار تقسیم کرد )

    مثلا در مثال بالا ( دیتابیس فرضی ) میخواهیم نمرات یک یا چند دانشجو رو با شماره دانشجویی مشخص بازیابی کنیم. خب میدونیم که شماره دانشجویی برای هر دانشجو یکتا هست و نمرات هم در جدول دوم بر اساس شماره دانشجویی وارد شده است . پس:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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


  6. #4
    داره خودمونی میشه farman-h's Avatar
    تاريخ عضويت
    Dec 2007
    پست ها
    171

    پيش فرض

    تلفیق برای بازیابی اطلاعات از چندین جدول بکار میره. مثلا شما فرض کنید یک جدول داریم که نام دانشجوها رو در اون ذخیره کردیم. یک جدول هم داریم که واحدهایی که دانشجویان در این ترم انتخاب کرده اند رو ذخیره کرده ایم. مشخص است که یک دانشجو میتونه بیش از یک واحد انتخاب کنه و هر واحد هم میتونه توسط بیش از یک نفر انتخاب شده باشه.
    خب، حالا میخواهیم واحدهایی که توسط دانشجوی X انتخاب شده رو ، بازیابی کنیم. در این حالت دو راه داریم:
    1- بررسی تک تک فیلدها و شرط گذاری برای آنها ، تا نهایت تمام واحدهایی که یک یا چند دانشجوی مشخص ( معلوم الحال ) انتخاب کرده اند رو بازیابی کنیم. یه لحظه فکر کن. مثلا در دانشگاهی به عظمت دانشگاه تهران، بررسی این فیلدها بصورت مجزا ، چقدر زمان بر خواهد بود.
    2- استفاده از دستورات تلفیق یا همون JOIN ( بهترین و در واقع مطمئن ترین راه )

    پنج روش متداول تلفیق ، در SًًQL عبارتند از :

    1- تلفیق Equi Join
    تساوی فیلدها رو بررسی میکنه. یعنی چه؟ یعنی فقط فیلدهایی بازیابی خواهند شد که مقدار آنها در جدولهای مختلف برابر باشه.
    یه مثال میزنم. دو تا جدول داریم. جدول1 و جدول2 .
    در جدول 1 دو تا فیلد داریم. فیلد شماره دانشجویی (S_Num) و فیلد نام دانشجو (Name).
    در جدول 2 هم سه تا فیلد داریم. فیلد شماره دانشجویی (S_Num) و نام درس ( Study ) و نمره ( Grade).
    برای بازیابی نمرات هر دانشجو از این دو جدول باید کدی مثل کد زیر نوشته بشه:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    2- تلفیق Natural
    این هم تساوی فیلدها رو بررسی میکنه اما ...
    اما فقط رکوردهای غیر تکراری بازیابی خواهند شد. باید به جای علامت تساوی ، علامت <> قرار دهیم.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    3- تلفیق Cross Join
    تمام رکوردهای جدولها بازیابی خواهند شد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    4- تلفیق Outer Join
    تمام فیلدهای یک جدول و بخشی از فیلدهای جدول دیگر را بازیابی میکند. و سه نوع دارد:
    Left Outer Join = بازیابی تمام رکوردهای جدول اول و رکوردهایی از جدول دوم که با جدول اول سازگارند.
    Right Outer Join = بازیابی تمام رکوردهای جدول دوم و رکوردهایی از جدول اول که با جدول دوم سازگارند.
    Full Outer Join = بازیابی تمام رکوردهای سازگار جدول اول و دوم.

    مثال:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    5- تلفیق Self Join
    جدول رو با خودش تلفیق میکنه. به چه دردی میخوره؟ خب ، معمولا برای پیدا کردن رکوردهای تکراری یک جدول بکار میره. ( نقطه مقابل دستور DISTINCT - که در پست قبل توضیح دادم) . در این الحاق حتما باید از نامهای مستعار استفاده کرد. ( یعنی جدول رو به دو جدول مستعار تقسیم کرد )

    مثلا در مثال بالا ( دیتابیس فرضی ) میخواهیم نمرات یک یا چند دانشجو رو با شماره دانشجویی مشخص بازیابی کنیم. خب میدونیم که شماره دانشجویی برای هر دانشجو یکتا هست و نمرات هم در جدول دوم بر اساس شماره دانشجویی وارد شده است . پس:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    سلام ممنون دوست عزيز واقعا زحمت كشيدي دستت درد نكنه.

  7. #5
    در آغاز فعالیت
    تاريخ عضويت
    Mar 2007
    پست ها
    4

    پيش فرض

    سلام
    با تشكر
    من دو تا جدول دارم كه در جدول يك عدد 1000 سه بار تكرار شده و در جدول شماره دو ، عدد 1000 يكبار تكرار شده . من قصد دارم اعداد جدول يك با جدول دو با هم كنترل و در خروجي عدد 1000 را دو بار نشان دهد .
    لطفاً كمكم كنيد

Thread Information

Users Browsing this Thread

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

User Tag List

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

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