2014-03-24 50 views
0

我有一個SQL Server數據庫中4代表與下面的模式:從不同的表中檢索數據(SQL Server)的

  1. 出席

    CREATE TABLE [dbo].[Attendance] (
    [AttendanceId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [CourseId]  UNIQUEIDENTIFIER NOT NULL, 
    [StudentId] UNIQUEIDENTIFIER NOT NULL, 
    [SubjectId] UNIQUEIDENTIFIER NOT NULL, 
    [Semester]  INT    NOT NULL, 
    [Month]  NVARCHAR (50) NOT NULL, 
    [Count]  INT    NOT NULL, 
    CONSTRAINT [PK_Attendance] PRIMARY KEY NONCLUSTERED ([AttendanceId] ASC), 
    CONSTRAINT [FK_Attendance_Student] FOREIGN KEY ([StudentId]) REFERENCES [dbo].[Student] ([StudentId])); 
    
  2. CREATE TABLE [dbo].[Course] (
    [CourseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [Name]  NVARCHAR (50) NOT NULL, 
    CONSTRAINT [PK_Course] PRIMARY KEY NONCLUSTERED ([CourseId] ASC) 
    ); 
    
  3. 學生

    CREATE TABLE [dbo].[Student] (
    [StudentId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [CourseId] UNIQUEIDENTIFIER NOT NULL, 
    [Name]  NVARCHAR (100) NOT NULL, 
    [RollNo] INT    NOT NULL, 
    [Semester] INT    NOT NULL, 
    CONSTRAINT [PK_Student] PRIMARY KEY NONCLUSTERED ([StudentId] ASC), 
    CONSTRAINT [FK_Student_Course] FOREIGN KEY ([CourseId]) REFERENCES [dbo].[Course] ([CourseId]) 
    ); 
    
  4. 主題

    CREATE TABLE [dbo].[Subject] (
    [SubjectId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, 
    [CourseId] UNIQUEIDENTIFIER NOT NULL, 
    [Name]  NVARCHAR (100) NOT NULL, 
    [Semester] INT    NOT NULL, 
    CONSTRAINT [PK_Subject] PRIMARY KEY NONCLUSTERED ([SubjectId] ASC), 
    CONSTRAINT [FK_Subject_Course] FOREIGN KEY ([CourseId]) REFERENCES [dbo].[Course] ([CourseId]) 
    ); 
    

我需要在以下格式創建出席報告:

課程名稱 | 學生姓名 | 使用者名稱 | 學期 | | 計數

請告訴我需要使用什麼SQL查詢,如果需要更改模式,則建議使用相同的SQL查詢。

我期待着您的回覆。

感謝,

+0

我試過下面的查詢行: SELECT Course.Name,Student.Name,Subject.Name,Attendance.Semester,考勤。考勤記錄從課程,學生,科目,出勤 問題在於它是從學生,科目和課程表中檢索所有記錄,但我只想記錄考勤的記錄。 –

+0

谷歌關於'SQL聯接'。 –

+0

感謝哥們,我試過INNER JOIN,它讓我達到了我需要的精確查詢。感謝您指出這方面! –

回答

1

你需要在查詢中使用一個JOIN所以它只返回從考勤表匹配[StudentId]的行。

例如

SELECT c.CourseName, s.StudentName, u.SubjectName, u.Semester, a.Month, a.Count 
FROM Student s 
    JOIN Attendance a ON s.StudentId = a.StudentId 
    JOIN Course c ON a.CourseId = c.CourseId 
    JOIN Subject u ON c.CourseId = u.CourseId 

東西沿着這些線路將只返回的具體匹配

+0

爲什麼downvote? – Starscream1984

+0

哦,我很抱歉,但我沒有投下朋友,謝謝你的回覆,它只是稍作調整。我將它標記爲答案。再次感謝! –

+0

你能告訴我如何從這個查詢創建一個視圖? –

相關問題