دسته بندی ها
22:58 1399/06/01

استخراج آخرین رکورد ثبت شده برای کاربران در Sql Server

مشخصات سوال کننده :
کاربر : Soltani     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 8326
1 نظر
saedbfd : این قسمت از سوال یک مقدار گنگ هست "کلیه آخرین رکوردهای ثبت شده برای فیلد کلید خارجی را استخراج کرد" یعنی در واقع شما میخواید لیست کاربران سیستم رو داشته باشید و ببینید در این جدول خاص آخرین رکوردی که برای اونا ثبت شده چی هست؟ لطفا کدهاتون رو قرار بدید (نه به صورت عکس) ضمنا فیلدهای جدولتون هم قرار بدید که بشه کوئری رو نوشت. شما * گذاشتید نمیشه فیلدها رو حدس زد

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 11:36 1399/06/01
پاسخ دهنده : fateme 04:06 1399/06/08

بهتر این هست که برای سوال پرسیدن جزییات رو کامل بفرمایید تا افرادی که قصد دارن وقت بذارن و پاسخ بدن بتونن پاسخ بهتری بدن. در هر صورت این سوال رو برای شما و سایر افرادی که می خوان موضوع استخراج آخرین رکورد برای گروهی از رکوردها در Sql Server رو انجام بدن پاسخ میدم.

 

بدست آوردن آخرین رکورد هر گروه در Sql server

 

استخراج آخرین رکورد در یک گروه در Sql

خب فرض کنید جدولی دارید با نام Users که لیست کاربران شما درون اون ذخیره میشه. این جدول دارای فیلدهای زیر می باشد :

  • UserID
  • FirstName
  • Family                                                             

خب در این جدول 3 فیلد داریم که شامل آیدی کاربر، نام و نام خانوادگی کاربر می باشد.

حالا فرض کنید جدول دیگری داریم که لیست پرسش های کاربران درون اون ذخیره شده. یعنی هر کاربر می تونه چندین سوال رو بپرسه. و ما میخوایم ببینم که هر کاربر آخرین سوالی رو که پرسیده چی بوده. بنابراین یک جدول هم به نام QuestionTbl داریم که شامل فیلدهای زیر می باشد.

نکته : فیلد UserID کلید خارجی در جدول QuestionID می باشد.

  • QuestioID
  • QuestionTitle
  • UserID

خب جدول بالا شامل ستونهای جدول QuestionTbl یا همون جدول سوالات می باشد.

 

حالا درخواست ما چی هست ؟

ما میخواهیم لیست آخرین سوال هر کاربر رو داشته باشیم. 

 

کوئری بدست آوردن لیست آخرین سوال هر کاربر (در واقع میشه گفت آخرین رکورد هر گروه)

 

select
    questionID,questionTitle,q.UserID
from
    QuestionTbl q
    inner join 
        (select UserID, max(questionID) as maxid from QuestionTbl group by UserID) as b on
        q.questionID = b.maxid

 

دقت کنید که در کوئری بالا بعد از inner join یک کوئری دیگه نوشتیم که درون اون بر روی فیلد UserID گروه بندی رو انجام دادیم و گفتیم بالاترین Id رو برای هر گروه بدست بیار که در واقع همون آخرین سوال هر کاربر میشه. البته کوئری های دیگه ای هم میشه برای این منظور نوشت که در این لینک میتونید مطالعه بفرمایید.

ویرایش شده در شنبه 8 شهریور 1399 ساعت 04:07:06
به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
1 نظر
aliss : سلام حالا اگر من نوع سوالام متفاوت باشه و بخوام به ازای هر سوالم آخرین سوال را داشته باشیم چطوری باشدکوئری رو تغییر بدیم. ممنون میشم راهنمایی بفرمایید

امتیاز کاربر : 0   رتبه کاربر : 7020   تاریخ ثبت : 10:33 1400/12/20
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود