สวัสดีครับ
ตอนนี้ผมทำระบบเก็บเกรดอยู่
ปัญหาคือในกรณีที่จะ Search ข้อมูล
สมมุติ จะหาว่าใครได้เกรด A ระหว่างปี 2012-2015 ติดกัน3ปีซ้อน
ผมเขียนแล้ว มันออกมาประมาณว่า ใครก็ตามที่ได้ เกรด A ภายในปี2012-2015 ปีใดปีหนึ่ง ก็ออกอะครับ
ผมอยากให้ออกเฉพาะคนที่ได้เกรด A ในทุกปี ผมจะเขียนอย่างไรครับ
อันนี้คือคำสั่ง SQL ที่เขียนครับ Code
Select DISTINCT a.Employee_ID,b.GradeSalary,b.Year
From (SELECT * FROM Profile ) a
INNER JOIN (SELECT Employee_ID, Year,GradeSalary, from evaluation) b
On a.Employee_ID=b.Employee_ID
WHERE b.GradeSalary = 'A' AND Year >= '2012' AND Year <= '2015'
Tag : PHP, MySQL
ประวัติการแก้ไข 2015-03-30 10:42:33
Date :
2015-03-30 10:10:12
By :
serhoney
View :
742
Reply :
2
No. 1
Guest
ลองแบบนี้ Code (SQL)
Select DISTINCT a.Employee_ID,b.GradeSalary,b.Year
From (SELECT * FROM Profile ) a
INNER JOIN (SELECT Employee_ID, Year,GradeSalary from evaluation) b On a.Employee_ID=b.Employee_ID
WHERE b.GradeSalary = 'A' AND Year >= '2012' AND Year <= '2015'
having count(a.Employee_ID)>3
หรือ
Code (SQL)
Select DISTINCT a.Employee_ID,b.GradeSalary,b.Year
From (SELECT * FROM Profile ) a
INNER JOIN (SELECT Employee_ID, Year,GradeSalary from evaluation) b On a.Employee_ID=b.Employee_ID
inner join (select Employee_ID,count(Employee_ID) as cg from evaluation where GradeSalary = 'A' and Year >= '2012' AND Year <= '2015' group by Employee_ID) as c on a.Employee_ID=c.Employee_ID and c.cg>3
WHERE b.GradeSalary = 'A' AND Year >= '2012' AND Year <= '2015'