PDA

View Full Version : سوال: نحوه query رکوردهای خاص از جدول detail ؟



a_j0321
دوشنبه 07 تیر 1389, 12:30 عصر
با سلام

من یه query می خواستم که به کار زیر رو انجام بده.

جدول 1
Master:
id
x

جدول 2:
detail:
masterid
year
month
no

آخرین رکورد وارد شده بر اساس year, month, no نزولی به همراه رکورد master
به عبارتی دیگر تمام رکوردهای master به همراه تنها آخرین رکورد detail بر اساس شرط گفته شده.

با تشکر

محمد سلیم آبادی
سه شنبه 08 تیر 1389, 01:40 صبح
Top N For Each Group (http://www.30sharp.com/ShowArticle.aspx?nid=13&did=210&AuthorID=11) عنوان مساله ی شماست
در مقاله ی فوق به اکثر راه حل ها اشاره کردم. بهترین راه حل استفاده از Analytical Ranking Function (http://www.30sharp.com/ShowArticle.aspx?nid=13&did=231&AuthorID=11) است، آن هم به خاطر اینکه داده های جدول یکبار بیشتر Scan نمی شوند.

این روش در تمام نسخه ها قابل استفاده است:

SELECT *
FROM Master M
INNER JOIN (SELECT *
FROM Details D
WHERE No = (SELECT TOP 1 No
FROM Details
WHERE MasterID = D.masterID
ORDER BY year desc, month desc, no desc))D
ON D.masterid = M.id ;