ورود

View Full Version : دستور Distinct



JaVa
دوشنبه 15 آبان 1391, 22:24 عصر
سلام و خسته نباشیدو...

این دستور تمامی واحد های دروس را برای ما نشون میده بدون تکرار بودن واحدها

SELECT DISTINCT vahed
FROM tbl_listen

این دستور هم علاوه بر واحدها، اسم دروس رو هم برای ما نشون میده.
SELECT DISTINCT vahed, name
FROM tbl_listen]

اما مشکلی که وجود داره اینه که همه ی دروس با تعداد واحدهای تکرای رو هم نشون میده !!

سئوالم این بود دستوری بنویسید که علاوه بر تعداد واحدها اسم دروس رو هم نشون بده تعداد واحد ها تکراری نباشه.

امیدوارم منظورم رو متوجه شده باشید.*:ناراحت:

mohsen24000
سه شنبه 16 آبان 1391, 06:01 صبح
این جور مواقع بهتره شما قسمتی از داده هایی رو که دارید و همچنین داده هایی رو که انتظار دارید رو در سؤالتون درج کنید تا بهتر بشه پاسختون رو داد!
در پاسخ به سؤال شما: فرض کنیم شما درس 3واحدی A و B رو دارید. اونوقت توقع دارید فقط یکی از این درسها در خروجی کوئری درج بشن!؟ با فرض مثبت بودن پاسخ حالا نام کدوم درس باید در خروجی قرار بگیره A یا B!؟
این فرضیات رو مشخص کنید تا جواب...

JaVa
سه شنبه 16 آبان 1391, 19:02 عصر
این فرضیات رو مشخص کنید تا جواب.

برای این دستورات داریم:
select *
from tbl_listen


94592

برای این یکی:
select distinct vahed
from tbl_listen

94591

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

تشکر.*

mohsen24000
سه شنبه 16 آبان 1391, 19:31 عصر
این یک نوع الحاقه:

select vahed,
MAX(case when rnk = 1 then lesson_name else '' end)+
MAX(case when rnk = 2 then '، '+lesson_name else '' end)+
MAX(case when rnk = 3 then '، '+lesson_name else '' end)+
MAX(case when rnk = 4 then '، '+lesson_name else '' end)+
MAX(case when rnk = 5 then '، '+lesson_name else '' end)+
MAX(case when rnk = 6 then '، ...' else '' end) as lessons
from (
select row_number() over(partition by vahed order by vahed) as rnk,
vahed,lesson_name,lid
from tbl_listen
) tbl group by vahed

نتیجه:
1 آز پایگاه داده، تنظیم
2 ریاضی، مباحث، مبتنی بر وب
3 پایگاه داده