ورود

View Full Version : سوال: میشه درباره این دستور select منو راهنمایی کنید



baran_mehr
جمعه 13 دی 1387, 12:57 عصر
دوستان من میخوام از یک select دو تا فیلد بر گردونم که یکیش تعداد عناصر و دومی شماره دانشجویی هست و بعد میخوام شماره دانشجویی رو به یک select دیگه بدم میشه بگید باید چی کار کنم
من همچین چیزی نوشتم اما ایراد میگیره خیلی امتحان کردم اما نشد.اگه میشه راهنمایی کنید:

select * from std where numberstd in(
select numberstd,count(numberstd) from intekhab where (numberstd=84894698) group by numberstd)

hooooman
جمعه 13 دی 1387, 13:22 عصر
سلام
SubQuery شما بايد 1 فيلد برگردونه

araelectronic@ymail.com
جمعه 13 دی 1387, 14:50 عصر
با سلام
دوست عزيز اين كا را با تركيب دو جدول انجام دهيد . البته اگر سوالتان را درست فهميده باشم. در صورت امكان دقيقا بگوييد چه كار ميخواهيد انجام دهيد

Mohammad_Mnt
شنبه 14 دی 1387, 11:49 صبح
پس این تعداد عنصرها به چه درد می‌خوره؟

ar.shirazi
یک شنبه 15 دی 1387, 07:12 صبح
دوستان من میخوام از یک select دو تا فیلد بر گردونم که یکیش تعداد عناصر و دومی شماره دانشجویی هست و بعد میخوام شماره دانشجویی رو به یک select دیگه بدم میشه بگید باید چی کار کنم
من همچین چیزی نوشتم اما ایراد میگیره خیلی امتحان کردم اما نشد.اگه میشه راهنمایی کنید:

select * from std where numberstd in(
select numberstd,count(numberstd) from intekhab where (numberstd=84894698) group by numberstd)


select numberstd,count(numberstd)
from intekhab
group by numberstd

baran_mehr
یک شنبه 15 دی 1387, 18:27 عصر
سلام دوستان ببخشید نتونستم زودتر سر بزنم.
من ئمیخوام بدونم میشه این کار رو بدون ترکیب جداول و با همین دستورات انجام داد.
فرض کنید من میخوام بدونم دانشجویی با شماره دانشجویی 10000 چند تا درس رو انتخاب کرده و بعد همون شماره دانشجویی رو از یک جدول دیگه جستجو کنم تا اطلاعات دانشجو رو برگردونه
ar.shirazi جان دستوری که شما گذاشتید تو کد خود من هست اما من میخوام دو تا کار رو با هم انجام بده

baran_mehr
دوشنبه 16 دی 1387, 22:10 عصر
دوستان ایا راهی نداره؟؟
نمیشه اینجور کارا رو انجام داد

farrokhpey.mahdi
چهارشنبه 18 دی 1387, 10:56 صبح
نمی دونم منظورتون رو درست متوجه شدم یا نه چون ساختار جدولتون رو نمی دونم ، ولی اگه ساختار دو تا جدول رو بدین شاید بتونم دقیق تر کمک کنم ، اما قطعه کد زیر هم بدک نیست ، با * مشخصات دانشجو و با SubQuery بعدی تعداد درسای دانشجو بمی گرده که البته نشد تست کنم ، ظاهرا درسته ، منتظر جوابتون هستم

SELECT * ,
(SELECT COUNT(NumberStd) FROM Intekhab WHERE NumberStd=Std.UmberStd GROUP BY NumberStd)AS LessonCount
FROM Std
WHERE NumberStd=(84894698)

HosseinProgrammer
چهارشنبه 18 دی 1387, 22:07 عصر
سلام. شما میتونید از عملگر UNION (به معنی اجتماع) استفاده کنید. کار این عملگر اجتماع گرفتن از دو Select بالا و پایینش است. امیدوارم درست راهنمایی کرده باشم.



Select اطلاعات دانشجو
From جدول دانشجو
Where شماره دانشجویی = 10000
UNION
Select Count(درس)
From جدول دروس
Where شماره دانشجویی = 10000

farrokhpey.mahdi
پنج شنبه 19 دی 1387, 08:57 صبح
UNION زمانی استفاده میشه کرد که تعداد و نوع فیلدهای دو query با هم یکی باشند ، شما در مثالتون در query اول تمام اطلاعات و در query دوم فقط یک ستون رو برگردوندید و این شدنی نیست .

HosseinProgrammer
پنج شنبه 19 دی 1387, 12:39 عصر
آره! عجب اشتباهی! اصلا حواسم نبود.

کد زیر درسته؟



Select اطلاعات دانشجو ، Count(درس)
From جدول دانشجو inner join جدول دروس on جدول دانشجو.شماره دانشجویی = جدول دروس.شماره دانشجویی
Where شماره دانشجویی=10000
Group By اطلاعات دانشجو


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

baran_mehr
پنج شنبه 19 دی 1387, 23:19 عصر
دوستان فرض کنید این دو جدول دانشجو و انتخاب درس من هست.
حالا به نظرتون باید چطور عمل کنم

farrokhpey.mahdi
شنبه 21 دی 1387, 09:11 صبح
شما همون کدی که من نوشتم رو استفاده کن ، درسته ، حل میشه

baran_mehr
شنبه 21 دی 1387, 12:06 عصر
SELECT * ,
(SELECT COUNT(NumberStd) FROM Intekhab WHERE NumberStd=Std.UmberStd GROUP BY NumberStd)AS LessonCount
FROM Std
WHERE NumberStd=(84894698)
دوست عزیز میشه یکم دربارش توضیح بدید؟

farrokhpey.mahdi
شنبه 21 دی 1387, 14:02 عصر
این یه جور جوین جالب توجهه ، ما تمام فیلهای جدول اول رو که انتخاب کردیم ولی بعد از کاما یه دستور سلکت دیگه هست که اخل پرانتزه و فقط یک ستون رو برگردونده ، داخل اون دستور سلکت هم شرطی که هست باعث میشه تا وابستگی بین رکورد داخل و رکوردهای بیرون به وجود بیاد ، مثل همون join عمل می کنه ولی بهتره ، چون قصدما برگردونده یک فیلده ...