0

次のデータがあります。

学生の名前; Student.RollNum; Student.Email; Student.Courses; 学生.誕生日; コース.ID; コース名; Course.インストラクター

ここで、提案された DB 設計を次に示します。2 つのテーブル => 学生、コース Student.ID が追加された新しいフィールドです -> 学生テーブルの一意のプライマリ キー

John Doe (Student.ID=1234) が受講したすべてのコースを取得するためのクエリは何でしょうか??

ID ではなく、コースの名前が必要です。

4

5 に答える 5

2

私は3つのテーブルでそれを設計します:

Students - ID; Name; RollNum; Email; Birthday;
Courses - ID; Name; Instructor
Students_Courses - a join table between the students and the courses

次に、次のことができます

SELECT c.Name
FROM Students s
INNER JOIN Students_Courses sc
    ON s.id = sc.studentId
INNER JOIN Courses c
    ON sc.course_id = c.courseid
WHERE s.id = 1234

または、学生の情報が必要ない場合は、クエリを次のように短縮できます。

SELECT c.Name
FROM Students_Courses sc
INNER JOIN Courses c
    ON sc.course_id = c.courseid
WHERE sc.studentId = 1234
于 2012-06-25T21:20:51.487 に答える
0

実際には、各学生が受講したコースを保持する3番目のテーブルが必要になります。これは、2列のテーブル(StudentId、CourseId)のように単純で、クエリは次のようになります。

SELECT c.Name
FROM Students as s
JOIN CoursesTaken as t on t.StudentId = s.Id
JOIN Courses as c on c.id = t.CourseId
WHERE s.Id = 1234
于 2012-06-25T21:32:22.190 に答える
0

3 つ目のテーブルを追加して、Students と Courses を結合します。これにより、多くの学生が多くのコースを受講できるようになります。このテーブルには、StudentId と CourseId が格納されます。次に、次のクエリを使用して、必要な結果を得ることができます。

SELECT c.Id, c.CourseName
FROM Courses c
    INNER JOIN StudentCourse sc
     ON c.CourseId = sc.CourseId
WHERE sc.StudentId = 1234
于 2012-06-25T21:22:25.343 に答える
0

宿題?新しいテーブルが必要です。たとえば、学生と学生が通うコースとの関係を表す StudentsCourses としましょう。Course テーブルに CourseId を追加する必要があります。したがって、StudentsCourses は次のように定義されます。

StudentCourses(StudentId, CourseId)

この時点で、参加したコースを取得します。

SELECT Courses.*
FROM Courses JOIN StudentsCourses sc ON sc.CourseId = Courses.CourseId
WHERE sc.StudenId = [DesideredStudentId]
于 2012-06-25T21:23:21.720 に答える
0

テーブルのデザインに欠陥があります。すべてのコースが 1 つの列 (Student.Courses) にまとめて一覧表示されており、その列の個々の項目を使用するポータブル SQL を正しく使用することはできません。StudentID と courseID (および場合によっては年/学期) をペアにする 3 番目のテーブル (Enrollments) が必要です。

しかし、このテーブルを追加すると仮定すると、SQL は次のようになります。

SELECT c.Name
FROM Enrollments e
INNER JOIN Courses c on c.ID = e.CourseID
WHERE e.StudentID = 1234
于 2012-06-25T21:23:37.343 に答える