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

نام تاپیک: دسترسی به دو سطر مجاور در یک جدول

  1. #1
    کاربر جدید
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    29

    دسترسی به دو سطر مجاور در یک جدول

    با سلام

    می خواستم ببینم می توانم به دو سطر مجاور در یک جدول بوسیله کد اس کیو ال دسترسی داشته باشم
    در اصل می خواهم درون یک جدول سطرهایی را انتخاب کنم که مثلا فیلد تاریخشان از رکورد قبلی کمتر است.

    متشکرم

  2. #2
    کاربر دائمی آواتار vadood
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهران
    پست
    858
    خوب با select و order by می تونی قبل و بعد یک مقدار را پیدا کنی. شاید منظورت را دقیق متوجه نشدم.

  3. #3
    کاربر جدید
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    29
    order by سطرها را بر اساس فیلد (های) خاصی مرتب می کند
    اما جدول من بایستی بر اساس یک فیلد دیگر به نام کد مرتب شود. سپس رکوردهایی رامی خواهم که اکنون مقدار تاریخشان نامرتب است.

  4. #4
    سلام
    دوست عزیز به قول آقای ودود یک مثال از آنچه می خواهی بگذار تا سوالت قابل درک تر باشد ولی آنچه من از سوالت متوجه شدم شما می خواهی ابتدا کلیه اطلاعاتت بر اساس فیلد کد مرتب شوند و بعد بر اساس تاریخ !!!!!! اگه درست متوجه شده باشم همان دستور order by کمکت میکنه و به این صورت که شما با استفاده از این دستور می توانی بانکت را بر اساس چند فیلد مرتب کنی بدین صورت که فیلد اصلی را در ابتدا و پارامترهای بعدی را به نسبت اولویت بعد از ان می گذاری وانها را با استفاده از کاما از هم جدا میکنی بطور مثال
    "select * from tblname order by fild1,fild2,fild3" 


    امیدوارم درست سوالتان را متوجه شده باشم و مفید واقع شده باشم :oops: :wink:

  5. #5
    کاربر جدید
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    29
    فرض کنید در جدول اطلاعات زیر وجود دارد.
    کد تاریخ
    1 12/2/81
    2 13/2/81
    5 15/2/81
    * 7 14/2/81
    11 18/2/81
    * 20 17/2/81
    21 20/2/81

    من از این جدول سطرهای با کد 7 و 20 را می خواهم چون فیلد تاریخ 7 از 5 کوچکتر است و فیلد تاریخ 20 نیز از 11 کوچکتر است
    اگر از دستور SQL آقای دهقان استفاده می کردم همچنان همه جدول فوق را باز می گرداند.
    در اصل من روشی را می خواهم که بتوانم سطر های جدول را با هم مقایسه کنم.
    خودم دو روش زیر را امتحان کردم ولی به نتیجه نرسیدم.
    1- جدول را با خودش join کردم بصورت روبرو که چون ممکن است کد ها به ترتیب وارد نشده باشند (مثلا در مثال فوق 4 و6و8و... وارد نشده اند) درست جواب نمی دهد

    Select * from tblname inner join (select * from tblname where not code in (select top 1 code from tblname)) as a on a.Code=tblname.code+1
    where tblname.date>a.date


    2- از کرسرها نیز می خواستم استفاده کنم ولی وقتی یک رکورد را واکشی (Fetch) میکنم آن را به برنامه باز می گرداند و اصلا نمی دانم چگونه رکوردهایی که شرایط مورد نظر من را دارند به عنوان مجموعه جواب بازگردانم.

  6. #6
    کاربر جدید
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    29
    ببخشید داده ها به هم ریخته شدند نمی دانم چرا اینطوری شد.
    کد تاریخ
    ............... 1 .......... 12/2/81
    ............... 2 .......... 13/2/81
    ............... 5 .......... 15/2/81
    * ............ 7 .......... 14/2/81
    .............. 11 ......... 18/2/81
    * .......... 20 .......... 17/2/81
    .............. 21 ......... 20/2/81

  7. #7
    کاربر دائمی آواتار vadood
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهران
    پست
    858
    امیدوارم کارت راه بیفته. فقط کافیه به جای #t اسم Table خودت را بذاری

  8. #8
    کاربر دائمی آواتار vadood
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهران
    پست
    858
    <p dir=ltr>
    select
    code,
    (select top 1
    t2.[date]
    from
    #t as t2
    where
    t2.code > aa.code
    and
    t2.[date] &lt; aa.[date]
    order by code desc
    ) as dd,
    (select top 1
    t2.[code]
    from
    #t as t2
    where
    t2.code > aa.code
    and
    t2.[date] &lt; aa.[date]
    order by code desc
    ) as dd2
    from
    #t as aa
    group by
    aa.code, aa.date
    having
    (select top 1
    t2.[code]
    from
    #t as t2
    where
    t2.code > aa.code
    and
    t2.[date] &lt; aa.[date]
    order by code desc
    ) is not null

    </p>

  9. #9
    کاربر جدید
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    29
    آقای ودود خیلی خیلی متشکرم
    کد SQL شما با تغییراتی که در آن انجام دادم را راه انداخت.
    امیدوارم که بتوانم لطفتان را جبران کنم
    کد مورد استفاده من به این شکل بود


    select code,date,
    &#40;select top 1 t2.date from TVaset as t2 where t2.code > aa.code order by code &#41; as dd,
    &#40;select top 1 t2.code from TVaset as t2 where t2.code > aa.code order by code &#41; as dc
    from TVaset as aa
    where &#40;select top 1 &#40; t2.date &lt; aa.date&#41; from TVaset as t2 where t2.code > aa.code order by code &#41;
    order by code




    با تشکر از همگی عزیزان

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

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