ورود

View Full Version : پرس و جو



nsdido
یک شنبه 02 خرداد 1389, 21:11 عصر
سلام . من یک query دارم که می خوام اگه زحمتی نیست از صحتش مطمئن بشم .
s(sid,sname,city,major)
course(cid,cname,credit,major,perecid)
term(sid,cid,pid,grade,termno,year)
proferror(pid,pname,degree,major)

مشخصا ت دانشجویان کامپیوتر که فارغ التحصیل هستد به عبارتی کلیه دروس مرتبط با خود را پاس کرده اند؟

nsdido
یک شنبه 02 خرداد 1389, 22:10 عصر
من این جوابو دادم درسته؟
select *
from s
where 10<(select term.grade
from term,student
where student.sid=term.sid
group by (term.sid)
having student.major='computer')

hamedsabzian
یک شنبه 02 خرداد 1389, 22:18 عصر
یه ساختار واضح تر از جدول هات بده! با یه کم توضیح!

kebriya
یک شنبه 02 خرداد 1389, 22:21 عصر
مثل کد زیر که شبیه کار شماست



SELECT tblshagerd.fname, tblshagerd.lname
FROM tblclass INNER JOIN
tbldoore ON tblclass.id = tbldoore.idclass INNER JOIN
tblshagerd ON tbldoore.idsh = tblshagerd.id
WHERE (tblclass.sath = 'inter') AND (tbldoore.payanterm >= 10)

nsdido
یک شنبه 02 خرداد 1389, 22:29 عصر
جدول student که شامل شماره و نام و شهر و رشته می شه رو دارم و می خوام مشخصات دانشجویی رو بدم که رشته اش کامپیوتره و همه درساشو پاس کرده یعنی میشه گفت بالاتر از 10 باشه.حالا این وسط به یک جدول ترم هم نیاز دارم که شامل شماره دانشجو،شماره درس،شماره استاد،نمره،شماره ترم و سال تحصیلی میشه .

kebriya
یک شنبه 02 خرداد 1389, 22:42 عصر
ببین توی sql روی جدولت راست کلیک کن open table و query رو انتخاب کن حالا همه جدولهایی که بالا گفتی رو اینجا add کن و فیلدهای مربوط رو ارتباط بده حالا فکر کنم بقیه رو خودت بتونی
اگه نشد جدولهاتو بفرست درست کنم

nsdido
یک شنبه 02 خرداد 1389, 22:44 عصر
خب من نمره رو توی جدول term دارم و رشته رو توی جدول student .باید دانشجویی رو پیدا کنم که هم رشته اش کامپیوتر باشه،هم همه ی درساشو پاس کرده باشه . نباید گروه بندی کنم بر اساس شماره دانشجویی و رشته کامپیوتر؟ این کدی که دادین از 3 جدول استفاده کرده

nsdido
یک شنبه 02 خرداد 1389, 22:57 عصر
ببین تا اینجاش درسته ؟
select term.grade
inner join student
on student.sid=term.sid
groupby(term.sid)
having student.major='computer'
این گروه بندی می کنه بر اساس رشته درسته؟ آخه من برنامه شو ندارم نمی تونم تست کنم.

nsdido
یک شنبه 02 خرداد 1389, 22:58 عصر
حالا اگه بخوام دانش اموزایی که همه درساشونو پاس کردن پیدا کنم باید چکار کنم؟

nsdido
یک شنبه 02 خرداد 1389, 23:07 عصر
مشکل من اینجاس که نمی دونم اگه گروه بندی بشه باید چه جوری واسه همه فیلدهای یک گروه مثلا شماره دانشجویی 60 همه ی درساشو با شرط بزرگتر از 10 چک کنم!:عصبانی++:

kebriya
دوشنبه 03 خرداد 1389, 08:24 صبح
SELECT tblshagerd.fname, tblshagerd.lname
FROM tblclass INNER JOIN
tbldoore ON tblclass.id = tbldoore.idclass INNER JOIN
tblshagerd ON tbldoore.idsh = tblshagerd.id
WHERE (tblclass.sath = 'inter') AND (tbldoore.payanterm >= 10)

ببین tblshagerd جدولی که اطلاعات شاگردا رو نگه میداره شبیه جدول student شما و tbldoore مشخصات نمره که شبیه جدول term شما. بالاخره یه فیلدی داری که این دو تا رو بهم وصل کنه دیگه؟ همون کلید خارجی میشه خوب inner join کن دیگه