نمایش نتایج 1 تا 6 از 6

نام تاپیک: عملگر Exist

  1. #1

    عملگر Exist

    دو تا سوال راجع به عملگر Exist دارم.ممنون میشم راهنماییم کنید.
    یکی مقایسه عملگر Exist-Join-Contain-in از لحاظ کارایی و سرعت و استفاده از حافظه ؟
    و یکی هم سوال زیر
    آیا در عملگر Exist برای مثال کد زیر به سطری از dependent برسیم که همنام employee مورد نظر باشد، این رویه را دوباره ادامه می دهیم.یعنی برای بقیه dependent ها باز چک می کنیم؟
    select E.fname
    from Employee As E
    where Exists
    (select * from dependent where E.ssn=Essn and E.fnam=Dependent_name )

  2. #2

    نقل قول: عملگر Exist

    سلام،
    در مورد سوال اول باید بگم اینا،یعنی exist ,contain, in, join چه وجه مشترکی باهم دارند که بخواهیم مقایسشون کنیم.راستی دستور contain چیه؟
    سوال دوم تا اونجا که من دیدم exist را با دستور if بکار می برند که اگر وجود داشت فلان کار رو بکن اگر نه فلان کار.مقدار بازگشتی دستور exist ، یک boolean بر می گردونه (true ,false )
    پس دستوراتی که نوشتید معنی پیدا نمی کنه!
    می تونی بدون Exist بنویسی تا درست شه یا می تونی از In استفاده کنی
    برای مثال
    Select *
    From EmployeeAddressTable
    Where FirstName IN ('Mary', 'Sam')



    SELECT * 
    FROM EmployeeAddressTable
    WHERE FirstName = 'Mary'
    OR FirstName = 'Sam'


    http://www.w3schools.com/sql/
    آخرین ویرایش به وسیله zizi_zizi69 : سه شنبه 02 آذر 1389 در 20:40 عصر

  3. #3

    نقل قول: عملگر Exist

    یکی مقایسه عملگر Exist-Join-Contain-in از لحاظ کارایی و سرعت و استفاده از حافظه ؟
    اين دستورات چندان وجه اشتراكي ندارند.
    Exists داراي خروجي بودن فرضا يك دستور رو معلوم ميكنه.
    join دستور رابطه اي براي ارتباط 2 جدول با هم.
    Contains معلوم كننده اينكه يك مقدار درون يك فيلد (يا يك مقدار ديگه) هست يا نه.
    in يك فيلد‌ (يا مقدار) رو توي يك مجموعه جسجتو ميكنه.
    آیا در عملگر Exist برای مثال کد زیر به سطری از dependent برسیم که همنام employee مورد نظر باشد، این رویه را دوباره ادامه می دهیم.یعنی برای بقیه dependent ها باز چک می کنیم؟
    select E.fname
    from Employee As E
    where Exists
    (select * from dependent where E.ssn=Essn and E.fnam=Dependent_name )
    بله ، براي هر سطر جستجو رو انجام ميده.
    بعضي مواقع ميشه به جاي استفاده از اين روش با استفاده از يك Join به نتيجه مورد نظر رسيد. براي مثال ممكنه بشه دستور شما رو بصورت زير نوشت
    Select 
    E.fname
    From
    Employee E inner join dependent D
    on
    E.ssn = D.Essn
    AND
    E.fname = D.Dependent_name

    سوال دوم تا اونجا که من دیدم exist را با دستور if بکار می برند که اگر وجود داشت فلان کار رو بکن اگر نه فلان کار.مقدار بازگشتی دستور exist ، یک boolean بر می گردونه (true ,false )
    پس دستوراتی که نوشتید معنی پیدا نمی کنه!
    همونطور كه خودتون گفتيد خروجي اين دستور Boolean است پس ميشه اونو توي شروط جستجو آورد. بعضي مواقع هست شما ميخوايد خروجي رو بر اساس مقدارهاي يك جدول ديگه به دست آورد و همچنين راهي براي استفاده از join وجود نداره توي اين حالات يكي از روشهاي پياده سازي بصورت دستور دوستمون است. (البته اين روش از نظر سربار زماني وضعيت مناسبي نداره!)

  4. #4

    نقل قول: عملگر Exist

    نقل قول:
    آیا در عملگر Exist برای مثال کد زیر به سطری از dependent برسیم که همنام employee مورد نظر باشد، این رویه را دوباره ادامه می دهیم.یعنی برای بقیه dependent ها باز چک می کنیم؟
    کد:
    select E.fname
    from Employee As E
    where Exists
    (select * from dependent where E.ssn=Essn and E.fnam=Dependent_name )
    بله ، براي هر سطر جستجو رو انجام ميده.
    منظور شما از جستجوی هر سطر جستجو در جدول Employee هست دیگه ؟
    چون برای Exists وقتی جدول dependent چک شد و سطر مورد نظر یافت شد دیگر چرا باید بقیه سطرها رو بگرده!

  5. #5

    نقل قول: عملگر Exist

    منظور شما از جستجوی هر سطر جستجو در جدول Employee هست دیگه ؟
    چون برای Exists وقتی جدول dependent چک شد و سطر مورد نظر یافت شد دیگر چرا باید بقیه سطرها رو بگرده!
    دوست عزیز شروط زمان اسکن کردن رکوردها بررسی میشه ، یعنی توی مثال دوستمون به ازا هر رکورد از جدول Employee یکبار بر روی جدول dependent جستجو انجام میشه. این حالت در بعضی از مواردی که شرط وابسته به مقدار رکورد در حال اسکن نیست هم صدق میکنه چه برسه به این مثال که هر رکورد باید توی جدول دیگه جستجو بشه و در صورت وجود ، رکورد اسکن شده نمایش داده بشه. برای تست این موضوع میتونید 2تا جدول با رکوردها زیاد بسازید این موضوع رو امتحان کنید.

  6. #6

    نقل قول: عملگر Exist

    دوستم،من منظور شما را فهمیدم .
    منم منظورم همین بود شاید درست ننوشتم ،
    که برای هر row در جدول Employee چک می شود ، که شرط مورد نظر با کدام یک از سطرها ی جدول dependent سازگار هست ،و به محض یافتن row مورد نظر در جدول dependent از بررسی بقیه row ها در اون جدول(dependent) دست نگه میداره و سراغ row بعدی از جدول employee می ره.
    ممنون

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •