PDA

View Full Version : بدست آوردن بیشترین تعداد انتخاب یک درس در یک سیستم انتخاب واحد



arashmmc
پنج شنبه 05 بهمن 1385, 11:54 صبح
در یک سیستم انتخاب واحد فرض کنید سه جدول داریم که اولی (نام درس و کد درس) ، دومی (نام دانشجو و کد دانشجو) و سومی انتخاب واحد هر دانشجو را نشان میدهد که شامل (کد دانشجو و کد درس) است

حال Query اینکه <<کدام درس بیشترین انتخاب را داشته>> چه می شود

whitehat
پنج شنبه 05 بهمن 1385, 12:43 عصر
یکی از راههای حل این مسئله :


SELECT TOP 1 LessonId,COUNT(LessonId) AS MaxUnit
FROM Register
GROUP BY LessonId
ORDER BY MaxUnit DESC

arashmmc
پنج شنبه 05 بهمن 1385, 15:35 عصر
با تشکر از جواب شما
اگر نخواهیم از تابع TOP استفاده کنیم و فقط دستورات SQL استاندارد را به کارببریم، جواب چه میشود

whitehat
جمعه 06 بهمن 1385, 12:54 عصر
در این صورت کار کمی پیچیده می شود، ابتدا باید تعداد Max را بدست بیاورید سپس از آن در شرط استفاده کنید


SELECT LessonId
FROM Class
GROUP BY LessonId
HAVING COUNT(LessonId)=
(
SELECT MAX(Tbl1.Unit) From
(
SELECT LessonId,COUNT(LessonId) AS Unit FROM Class
GROUP BY LessonId
) AS Tbl1
)

arashmmc
شنبه 07 بهمن 1385, 13:01 عصر
با تشکر از جواب شما. دلیل اینکه بنده اصرار به استفاده از دستورات SQL استاندارد دارم این است که Query شما مستقل از نوع Engine که روش کارمیکنید خواهد بود.
الان Query دوم روی هر engine کار میکند و این یعنی همه چی!