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

نام تاپیک: نمایش دو تیبل در یک کوئری

  1. #1

    Arrow نمایش دو تیبل در یک کوئری

    سلام
    دوتا تیبل دارم با فیلم‌های مشابه به هم و البته نام‌های متفاوت

    حالا می‌خواهم با یک کوئری اطلاعات دوتا جدول را البته زیر هم دریافت کنم.
    select * from news where id<800 and id>250 order by id desc

    select * from paper where Pid<700 and id>5000 order by id desc


    ممنون می‌شوم راهنمایی کنید

  2. #2
    از طریق table function می توانید
    CREATE FUNCTION "Function"()
    RETURNS @table_variable TABLE (column1 datatype, column2 datatype)
    AS
    BEGIN
    INSERT INTO @table_variable select * from news where id<800 and id>250 order by id desc
    INSERT INTO @table_variable select * from paper where Pid<700 and id>5000 order by id desc
    RETURN
    END


    ضمنا column و datatype متناسب با خروجی تعریف می شود

  3. #3

  4. #4

    Red face

    سلام
    با تشکر از راهنمایی شما
    بسیار کمک کردید و کارم راه افتاد
    آخرین ویرایش به وسیله iran400 : جمعه 20 مرداد 1385 در 00:27 صبح دلیل: این پست به دلیل تکراری بودن بطور خودکار ادغام شده است.

  5. #5
    خواهش می کنم
    موفق باشید
    جالبه بدونید کد default که من ازش براتون استفاده کردم در اکسس پروجکت به عنوان scalar table funcion اومده بود .
    شهر الکترونیک چیزی که همه بهش نیاز دارن و ما ایرانیها از همه نیازمند تر و در عین حال بی تفاوت تر به آن .

  6. #6
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    اصولا union برای اینچنین مواقعی خلق شده

  7. #7
    سلام
    البته برای این مساله راه های زیادی هست ولی به نظر من هم union بهتر از table-valued function است چون سرعت اجرای کوئری بالاتر می باشد.

  8. #8

    Lightbulb

    نقل قول نوشته شده توسط odiseh
    سلام
    البته برای این مساله راه های زیادی هست ولی به نظر من هم union بهتر از table-valued function است چون سرعت اجرای کوئری بالاتر می باشد.
    سلام
    در صورت امکان یک مثال بزنید

  9. #9
    مثال:

    select * from news where id<800 and id>250 order by id desc
    union
    select * from paper where Pid<700 and id>5000 order by id desc

  10. #10
    select * from news where id<800 and id>250
    union
    select * from paper where Pid<700 and id>5000 order by id desc
    منی که نام شراب از کتاب می شستم
    زمانه کاتب دکان می فروشم کرد.

  11. #11
    سلام
    با تشکر از پاسخهای خوبی که دوستان در مورد union داده اند، من هم دو نکته کوچیک رو عنوان می کنم::
    یادمان باشد که برای اجرای یه دستور از نوع union باید
    اولا تعداد فیلدها در همه subQuery هایی که با هم union می کنیم یکسان باشد.
    ثانیا اسامی فیلدها (alias) اون ها هم باید با هم یکسان باشد.

    مثال::
    select 1 as TypeCode, Name, Family From dbo.Personnel Where EduCode > 0
    union
    select 0 as TypeCode, ExtName as Name, ExtFamily as Family From dbo.ExtPersonnel Where EduCode = 0

  12. #12
    اما به نظر می رسه یک مشکلی هست لطفا راهنمایی کنید .
    در union وقتی مقادیر دو رکورد از دو جدول یکسان باشد فقط یک بار رکورد دیده می شود .
    ضمنا اطلاعات جدول دوم زیر جدول اول قرار نمی گیرد بلکه بر اساس فیلد اول (ID) مرتب می شود .
    که table function چینین کاری رو نمی کنه و داده ها رو بدون دستکاری ارائه میده .
    شهر الکترونیک چیزی که همه بهش نیاز دارن و ما ایرانیها از همه نیازمند تر و در عین حال بی تفاوت تر به آن .

  13. #13

  14. #14
    سلام
    با تشکر از reza_rad و saram

    همانطور که آقای saram گفتند گزینه order by رو نمی‌شه برای هر تیبل جدا در نظر گرفت و فقط روی نتیجه دو تیبل اعمال می‌شود.

    با تشکر از شما

  15. #15
    نقل قول نوشته شده توسط odiseh
    سلام
    با تشکر از پاسخهای خوبی که دوستان در مورد union داده اند، من هم دو نکته کوچیک رو عنوان می کنم::
    یادمان باشد که برای اجرای یه دستور از نوع union باید
    اولا تعداد فیلدها در همه subQuery هایی که با هم union می کنیم یکسان باشد.
    ثانیا اسامی فیلدها (alias) اون ها هم باید با هم یکسان باشد.

    مثال::
    select 1 as TypeCode, Name, Family From dbo.Personnel Where EduCode > 0
    union
    select 0 as TypeCode, ExtName as Name, ExtFamily as Family From dbo.ExtPersonnel Where EduCode = 0
    شما میتونین در Query دوم ( و بعدیها...) Alias نگیرید. نام Alias از اولین Query استفاده خواهد شد.

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

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