Monday, 15 July 2013

sql server 2008 - How to query Sql Db to get the students' result for only those who complete all exam's stages -


ExamsStagesTbl

  CourseId StageId 1 1 1 2 2 1 3 1 3 2 3 3 3 4  

<कोड> StudentsResultTbl

  StudentId CourseId StageId StageDgree 23 1 1 30 23 1 2 25 23 3 1 30 10 1 1 27 10 2 1 30  

कृपया सभी परीक्षा के चरणों को समाप्त करने के लिए, तालिका के सभी रिकॉर्ड कैसे प्राप्त करें StudentsResultTbl परिदृश्य: उपरोक्त सारणी से: छात्र 23 की परीक्षा 1 और 3 के पाठ्यक्रमों में है लेकिन वह केवल पाठ्यक्रम पूरा करता है। छात्र 10 की परीक्षा 1 और 2 के पाठ्यक्रम में है, लेकिन वह केवल पाठ्यक्रम पूरा करता है 2. तो परिणाम कैसे प्राप्त करें (यदि छात्र

इसे आज़माएं:

 < कोड> घोषणा @courses टेबल (CourseID INT, StageID INT) की घोषणा @results टेबल (StudentID INT, CourseID INT, StageID INT) @courses मान में डालें (1, 1), (1, 2), (2, 1), (3, 1), (3, 2), (3, 3), (3, 4) @results मान में डालें (23, 1, 1), (23, 1, 2), (23, 3, 1 ), (10, 1, 1), (10, 2, 1); cte1 के साथ, cte2 के रूप में (CourseID, COUNT (*) StageCount से @courses सी ग्रुप CourseID द्वारा के रूप में चयन) (चयन StudentID, CourseID, COUNT (DISTINCT StageID) StageCount रूप से @results सी ग्रुप StudentID, CourseID द्वारा) का चयन करें cte2। StudentID, cte2.CourseID से cte2 शामिल हों cte1 पर cte1.CourseID = cte2.CourseID कहां cte1.StageCount = cte2.StageCount आदेश द्वारा cte2.StudentID, cte2.CourseID  

आउटपुट:

<पूर्व> विद्यार्थीआईडी ​​कोर्सआईडी 10 2 23 1

No comments:

Post a Comment