omid.n1990
شنبه 09 شهریور 1392, 14:30 عصر
سلام، من دو تا پرس وچو نیاز پیدا کردم نمیدونم چطوری انجامش بدم
فرض کنید یک جدول دارم با دو فیلد، یکی نام یکی هم اسم درس پاس شده است. به صورت زیر
نام / اسم درس
علی/ادبیات
علی/زبان
علی/انقلاب
علی/تربیت بدنی
علی/کارآموزی
حسن/فیزیک
حسن/ریاضی
حسن/ادبیات
حسن/ کارآموزی
حالا دو نوع پرس و جوی زیر رو واسه این نیاز دارم نمیدونم چیکار کنم
یک. اسم کسانی که هم ادبیات و هم انقلاب را پاس کردن بدهد مثلا این رو نوشتم، اما دنبال بهترش هستم
SELECT name
FROM tblPass
WHERE (dars = 'انقلاب') OR
(dars = 'ادبیات')
GROUP BY name
HAVING (COUNT(*) = 2)
دو. اسم کسانی که تنها ترکیبی از ادبیات، انقلاب و فیزیک را پاس کردهاند (یعنی کسانی که فقط یکی از سه تا، یا دو تا از این سه تا یا هرسه مورد رو پاس کرده باشند و به جز این سه درس هیچ درس دیگری پاس نکرده باشند.)
و برای دومی:
SELECT name
FROM tblPass
WHERE (dars = 'a') OR
(dars = 'c')
GROUP BY name
HAVING (COUNT(*) IN
(SELECT COUNT(*) AS Expr1
FROM tblPass AS tblPass_1
WHERE (tblpass.name = name)
GROUP BY name))
تشکر
فرض کنید یک جدول دارم با دو فیلد، یکی نام یکی هم اسم درس پاس شده است. به صورت زیر
نام / اسم درس
علی/ادبیات
علی/زبان
علی/انقلاب
علی/تربیت بدنی
علی/کارآموزی
حسن/فیزیک
حسن/ریاضی
حسن/ادبیات
حسن/ کارآموزی
حالا دو نوع پرس و جوی زیر رو واسه این نیاز دارم نمیدونم چیکار کنم
یک. اسم کسانی که هم ادبیات و هم انقلاب را پاس کردن بدهد مثلا این رو نوشتم، اما دنبال بهترش هستم
SELECT name
FROM tblPass
WHERE (dars = 'انقلاب') OR
(dars = 'ادبیات')
GROUP BY name
HAVING (COUNT(*) = 2)
دو. اسم کسانی که تنها ترکیبی از ادبیات، انقلاب و فیزیک را پاس کردهاند (یعنی کسانی که فقط یکی از سه تا، یا دو تا از این سه تا یا هرسه مورد رو پاس کرده باشند و به جز این سه درس هیچ درس دیگری پاس نکرده باشند.)
و برای دومی:
SELECT name
FROM tblPass
WHERE (dars = 'a') OR
(dars = 'c')
GROUP BY name
HAVING (COUNT(*) IN
(SELECT COUNT(*) AS Expr1
FROM tblPass AS tblPass_1
WHERE (tblpass.name = name)
GROUP BY name))
تشکر