ورود

View Full Version : مشکل ارایش رکوردها در sql server



یا صاحب الزمان
چهارشنبه 16 اسفند 1385, 10:45 صبح
با سلام خدمت دوستان عزیز.
ممنون می شم اگه به سوال من پاسخ بدین.
فرض می کنیم دیتا بیسی با ده رکورد داریم.
1-
2-
...
9-
10-
حال می خواهیم به صورت زیر مرتب شود.
1-
6-
2-
7-
3-
8-
4-
9-
5-
10-
باید چکار کرد؟

hdv212
چهارشنبه 16 اسفند 1385, 12:27 عصر
اینطوری نمیشه که شما مکان هر رکورد رو توی دستور select مشخص کنی .. باید بر اساس یه فیلدی مرتب سازی کنی که به هدفت برسی ..

mazoolagh
پنج شنبه 17 اسفند 1385, 13:44 عصر
اینکه چرا شما به این نوع مرتب کردن نیاز پیدا کردین خودش جای سئوال هست و اگر توضیح بیشتری بدین احتمال کیس جالبی خواهد بود.
اما برای مرتب کردن به ترتیبی که اشاره شد فکر کنم بتوانید یک جدول دیگه بسازید با دو فیلد، یکی بعنوان کلید که ترتیب سورت شما رو نگهداری کنه و یکی با مقادیر 1 تا 10 و در کویری خودتون این جدول رو با جدول اصلی join کنین.

یا صاحب الزمان
پنج شنبه 17 اسفند 1385, 15:36 عصر
این روشی که شما فرمودین علاوه بر کند بودن در رکوردهای بالاتر overflow می شود. روش اولی جالبتر و بهتر است.
اما این که این نوع سورت کردن به چه درد می خورد؛ برای قبض های مخابرات که اگر به ترتیب ا..10 چاپ شودبعد از این که قبض ها در دو ردیف چاپ شدند نیاز است که به صورت دستی مثلا 30000 قبض را به ترتیب روی هم بچینند که کار فوق العاده وقتگیر و سختی است که با این روش این مشکل حل می شود.
امیدوارم متوجه شده باشید.

mazoolagh
جمعه 18 اسفند 1385, 08:03 صبح
خوب من فکر میکردم بدون ترتیب هست - شما در اصل گزارش چند ستونی دارین و میخواین اولویت چاپ اول عمودی و بعد افقی باشه.

فکر کنم اینکار رو در گزارش راحتتر میتونین انجام بدین. access رو که میدونم داره باحتمال زیاد کریستال ریپورت هم چنین امکانی به شما میده.

linux
شنبه 19 اسفند 1385, 00:54 صبح
با سلام خدمت دوستان عزیز.
ممنون می شم اگه به سوال من پاسخ بدین.
فرض می کنیم دیتا بیسی با ده رکورد داریم.
1-
2-
...
9-
10-
حال می خواهیم به صورت زیر مرتب شود.
1-
6-
2-
7-
3-
8-
4-
9-
5-
10-
باید چکار کرد؟
به این اعداد یکی در میان -5 و 5 اضافه میشه.
میشه این اعداد را تولید کرد ولی وقتی توی جدول باشه نمیشه مرتبش کرد مگر این که یک فیلد جدید به اسم ranking اضافه کنید سری این اعداد را درست کنید اگر فیلد عددی برابر این عدد بود مقدار ranking را وارد کنید.