تالار گفتمان مانشت
ابهام در کوئری - نسخه‌ی قابل چاپ

ابهام در کوئری - H-Arshad - 17 فروردین ۱۳۹۳ ۰۹:۰۴ ق.ظ

سلام
کد:
select distinct pname
from enroll
where crsno in (select crsno
from enroll
where sname='kazemi')

۱-اسامی استادانی که یکی از درس هایی را تدریس میکنند،که کاظمی در آن درسها ثبت نام کرده است.
۲-اسامی استادان دانشجویی به نام کاظمی
۳-اسامی استادانی که دقیقا همان درس هایی را تدریس می کنند که کاظمی در آن درس های ثبت نام کرده است.
۴-اسامی استادانی که تمام درس هایی را تدریس میکنند که کاظمی در آن درس های ثبت نام کرده است.

جواب ظاهرا میشه گزینه یک . اما چرا؟ در کوئری بالا اسامی تمام استادانی رو برمیگردانه که کاظمی در اون درس ها ثبت نام کرده.چرا فقط میگه یکی؟ (گزینه یک منظورمه)
وجود و عدم وجود distinct توی گزینه ها فرق نداره درسته؟ (درسته که نام اساتید تکراری بر نمی گردونه اما توی پاسخ نباید تاثیر بزاره در این حالت)

RE: ابهام در کوئری - Morris - 17 فروردین ۱۳۹۳ ۱۲:۴۱ ب.ظ

به نظر من گزینه دوم درست است. گزینه اول به شرطی درست می بود که به صورت زیر طرح می شد :

اسامی استادانی که حداقل یکی از درس هایی را تدریس میکنند،که کاظمی در آن درسها ثبت نام کرده است


distinct تفاوتی در انتخاب گزینه ها ندارد.

RE: ابهام در کوئری - H-Arshad - 17 فروردین ۱۳۹۳ ۱۰:۰۰ ب.ظ

(۱۷ فروردین ۱۳۹۳ ۱۲:۴۱ ب.ظ)Morris نوشته شده توسط:  به نظر من گزینه دوم درست است. گزینه اول به شرطی درست می بود که به صورت زیر طرح می شد :

اسامی استادانی که حداقل یکی از درس هایی را تدریس میکنند،که کاظمی در آن درسها ثبت نام کرده است


distinct تفاوتی در انتخاب گزینه ها ندارد.

سلام
اما در گزینه ها شماره یک را زده

RE: ابهام در کوئری - hosshah - 18 فروردین ۱۳۹۳ ۰۹:۱۳ ب.ظ

سلام دوست عزیز من هم با حرفی که جناب Morris زده موافقم میخواستم توضیح بدم که دیدم ایشون قبلا گفته.