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

نام تاپیک: ایجاد یک فیلد ردیف در select از view

  1. #1

    ایجاد یک فیلد ردیف در select از view

    سلام،
    دستوری در sql هست که با کمک اون بشه یک فیلد ردیف به فیلدهامون اضافه کنیم که وقتی رکوردها در یک data gride نشون داده میشه، کنارش شماره اون رکورد هم باشه.مثلا :
    1 علی احمدی
    2 مریم عسگری
    3
    4
    5
    ممنون میشم

  2. #2
    دوست عزیزم،
    در حال حاضر در SQL Server تنها کاری که میتونید بکنید اینه که Query رو با خودش Join کنید. به عنوان مثال شما Query زیر رو(در دیتابیس Pubs) میخواهید که بهش ستون شمارنده اضافه کنید:

    SELECT au_lname, au_fname FROM authors

    حالا این Query رو با خودش Join میکنیم:

    SELECT a1.au_lname, a1.au_fname
    FROM authors a1 INNER Join authors a2
    ON a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
    ORDER BY 1

    اگر به نتیجه دقت کنید، تعداد دفعات تکرار هر اسم، نشون دهنده عددی هستش که باید در ستون شمارنده براش قید بشه. حالا با یک Group By و یک Count ساده این کار تکمیل میشه:

    SELECT COUNT(*), a1.au_lname, a1.au_fname
    FROM authors a1 INNER Join authors a2
    ON a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
    GROUP BY a1.au_lname, a1.au_fname
    ORDER BY 1

    حتی المقدور از انجام این کار اجتناب کنین چون هر چی نتیجه Query بیشتر باشه، به طور تصاعدی این Join تعداد رکوردها رو افزایش میده که طبیعتا در سرعت کار تاثیر میگذاره.
    ولی اجازه بدین این خبر خوب رو بدم که در SQL Server 2005 یک سری Ranking Function اضافه شده که از اونها میشه به تابع ROW_COUNTER اشاره کرد. با این تابع که در لیست SELECT قرار میگیره، به راحتی شمارنده به نتیجه Query اضافه میشه.
    موفق باشید،
    امین ثباتی MCSD

  3. #3
    سلام
    من این دستور رو اجرا کردم جواب داد
    شاید بدردتون بخوره
    use northwind
    select customerid ,companyname,
    (select count(customerid) from customers c1 where c1.customerid<c2.customerid)
    from customers c2
    order by 1

  4. #4
    دوست عزیزم،
    برای اضافه کردن Counter همیشه میبایستی Query با خودش Join بشه. اگر چه در ظاهر این Query فقط از Scalar Subquery استفاده کرده، اما اگر به Execution Plan این Query در Query Analyzer نگاهی بندازیم، دقیقا یک Inner Join انجام شده.
    متاسفانه این تنها روشیه که در SQL server 2000 میتونیم انجام بدیم، ولی در SQL Server 2005 همونطور که در Postهای قبلی اشاره شد، امکانات بهتری وجود داره :)

  5. #5
    با سپاس از استاد گرامی
    الان شما از جدول pubs استفاده کرده اید . ولی من برای View ردیف می خوام .این روش برای View جواب نمیده.
    ممنونم

  6. #6

    CREATE VIEW v_test
    AS
    SELECT TOP 100 PERCENT COUNT(*) as Rank, a1.au_lname, a1.au_fname
    FROM authors a1 INNER Join authors a2
    ON a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
    GROUP BY a1.au_lname, a1.au_fname
    ORDER BY 1
    go

    ولی توصیه میکنم از این روش استفاده نکنید

تاپیک های مشابه

  1. خروجی یهview براساس جدول مرتب شده(مهمه)
    نوشته شده توسط maryam_jamshid در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: چهارشنبه 09 آبان 1386, 07:40 صبح
  2. PDF VIEW را جهت مشاهده صفحات PDF نیاز دارم
    نوشته شده توسط BPROD_ASLANI در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 5
    آخرین پست: دوشنبه 12 شهریور 1386, 14:38 عصر
  3. پردازش ثانویه رو حاصل select یک view
    نوشته شده توسط aliila در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: یک شنبه 20 خرداد 1386, 22:13 عصر
  4. کار با View ها
    نوشته شده توسط mahak_f در بخش SQL Server
    پاسخ: 9
    آخرین پست: سه شنبه 12 دی 1385, 12:51 عصر
  5. view
    نوشته شده توسط RASAM در بخش SQL Server
    پاسخ: 3
    آخرین پست: چهارشنبه 20 مهر 1384, 11:45 صبح

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

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