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

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

  1. #1

    کمک برای نوشتن یک کوئری برای select از یک جدول

    سلام

    من یک جدول دارم که مطالب ویکی مو توش نگهداری می کنم! برای هز تغییر در متن ویکی من یک رکورد جدید از متن رو دوباره وارد جدول می کنم و برای جدا کردن اون از متن قبلی یک ستون به نام version دارم که به مقدار آخر یکی اضافه می کنه و وارد می شه!
    حالا من می خوام به 10 صفحه ی آخری که ویرایش شده دسترسی داشته باشم! یعنی 10 صفحه ی متمایز از جدید ترین رکوردهای وارد شده به جدول که version اونا بین wikiid برابر مقداز max رو داشته باشه!
    برای بدست آوردنش از چه رکوردی باید استفاده کنم؟

    ممنون

  2. #2

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    سلام دوست عزیز،
    لطفا" ساختار جداول خود را در اینجا قرار دهید،
    برای این منظور از جداول مورد نظر اسکریپت CREATE TABLE تهیه کرده و پست کنید،/
    I've just started tweeting!
    @Alireza_Maddah

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    محل کارم
    پست
    116

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    سلام
    اگه درست فهمیده باشم شما باید بتونین روی wikid دستور group by رو بزنین و بگین تو هرگروه max version رو بده(قطعا wikiid کلید اصلی نیست دیگه؟؟!!)

    select top 10 max(version),wikiid from <table> group by wikiid

    برای اینکه 10 صفحه جدیدترین ها باشه باید یه فیلدی مثل تاریخ ویرایش هم داشته باشی که بتونی مرتب سازی هم انجام بدی یعنی:
    <select top 10 max(version),wikiid from <table> group by wikiid order by <date desc

    خوب تو این دستور فقط میتونین آخرین version و wikiid رو بگیرین که اگه فیلد های بیشتری بخواین حالا باید از جدول اصلی اونایی رو بیارین که wikiid , version شون از دستور بالا بدست اومده که میتونی نتیجه ی دستور بالا رو تو یه جدول موقت بزاری و ازش استفاده کنی

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

  4. #4

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    ممنون دوست من کاملا درست بود. ولی الان یک مشکلی دارم! همونطور که خودتونم اشاره کردید wikiid کلید اصلی نیست ولی یک ستون به نام ID دارم که کلید اصلی هستش و باید اون هم select بشه! اما موقعی که توی select نام این ستون دو هم وارد می کنم خطای زیر رو میده :


    column ID is invalid in the select list because it's not contained in either an aggregate function or the GROUP BY clause.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    محل کارم
    پست
    116

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    این خطا به خاطر اینه که شما تو دستور select با group by نمی تونی غیر از توابع sum,avg,..و فیلد مورد نظر در که اینجا wikiid هست چیز دیگه ای بیاری ،یا باید select نهایی رو از روی 2 فیلدی که گفتم بزنی ،یا از روی اون دوتا با یه select دیگه id رو بیاری،قبلا نتیجه ی اولی رو تو یه جدول مجازی ذخیره کن

  6. #6

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    من فایل اصلی این بانک رو می ذارم اگه میشه اینو خورت زحمتشو بکش.

    ممنون.
    فایل های ضمیمه فایل های ضمیمه

  7. #7

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    حالا شد!
    اگر درست متوجه شده باشم شما می خواهید آخرین ویرایش های 10 صفحه ی آخری که در جدول درج شده است را بدست آورید.


    SELECT TOP 10 *
    FROM
    (
    SELECT *,
    ROW_ID=ROW_NUMBER()
    OVER (PARTITION BY TitleId ORDER BY Version DESC)
    FROM [Content]
    ) AS D
    WHERE ROW_ID=1
    ORDER BY VersionDate DESC

    آخرین ویرایش به وسیله محمد سلیم آبادی : پنج شنبه 05 شهریور 1388 در 21:46 عصر
    وبلاگ من (Advanced SQL Querying)

  8. #8

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    ممنونم دوست من.
    حالا اگر بخوام فیلد های Titile.name و Title.slug رو وقتی content.TitleId = Title.Id هستش join کنم باید از چه کوئری ای استفاده کنم ؟

  9. #9

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    اول بگید که query که در پست شماره 7 قرار داده ام نیاز شما را بر طرف می کند؟

    بعد این query رو امتحان کنید ببینید به خواسته خود می رسید یا نه؟




    SELECT TOP 10 *
    FROM
    (
    SELECT *,
    ROW_ID=ROW_NUMBER()
    OVER (PARTITION BY TitleId ORDER BY Version DESC)
    FROM [Content]
    ) AS D INNER JOIN Title t ON D.titleid=t.id
    WHERE ROW_ID=1
    ORDER BY VersionDate DESC


    وبلاگ من (Advanced SQL Querying)

  10. #10

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    بله دوست عزیز ممنون
    هم اون کد و هم این کد نیاز منو برطرف کرد!
    بیساز ممنونم

  11. #11

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    نیاز مرا برطرف کرد
    یک سوال: شما می خواهید آخرین ویرایش های 10 عنوان آخری که در جدول title درج شده است را به نمایش در بیاورید؟

    می توانید از این query استفاده کنید، به خطی که به رنگ رانجی در آمده است توجه کنید!


    /*------------------------
    select id, cast([name] as nvarchar(25)) , cast(slug as nvarchar(25)) from title
    ------------------------*/
    id
    ----------- ------------------------- -------------------------
    1 Home home
    2 Silverlight Support silverlight-support
    3 Video Support video-support
    4 RSS Support rss-support
    5 Syntax Highlighting Suppo syntax-highlighting
    6 Formatting and Layout formatting-and-layout
    7 Basic Text Formatting basic-text-formatting
    8 Headings headings
    9 Code Blocks code-blocks
    10 Escaped Markup escaped-markup
    11 Lists lists
    12 Tables tables
    13 Horizontal Rules horizontal-rules
    14 Text Alignment text-alignment
    15 Links links
    16 Images images

    (16 row(s) affected)



    SELECT TOP 10 *
    FROM
    (
    SELECT *,
    ROW_ID=ROW_NUMBER()
    OVER (PARTITION BY TitleId ORDER BY Version DESC)
    FROM [Content]
    ) AS D INNER JOIN Title t ON D.titleid=t.id
    WHERE ROW_ID=1
    ORDER BY t.id DESC


    وبلاگ من (Advanced SQL Querying)

  12. #12

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    نه من وقتی از این کوئری استفاده جواب درست رو بهم نمیده! همون قبلیه درست بود!

    بازم ممنون

  13. #13

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    یک سوال: چرا تمام نسخه های مختلف یک نوشته (صفحه) را می خواهید ذخیره کنید؟ آیا مثلا برای back up گیری این کار را انجام می دهید؟
    وبلاگ من (Advanced SQL Querying)

  14. #14

    نقل قول: کمک برای نوشتن یک کوئری برای select از یک جدول

    آره
    چون من این صفحه رو به عنوان ویکی استفاده می کنم که همه ی کاربرا می تونن تغییرش بدن! اینطوری یک بک آپ برای اطمینان موجود هستش!

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

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