0

誰にでも不思議に思うことは、プロジェクトで発生したいくつかのクエリで私を助けることができます. このプロジェクトは、トレーニング コースへの参加者と参加者のデータベースです。

テーブルがいくつかあります...

Users (with UserID and Username)

Teachers (with TeacherID and TeacherName)

Courses (with CourseID, CourseName, CourseDate and TeacherID) - this one relates to which teacher took which course

Attendances (with UserID and CourseID) - this one relates which user attended which course

クライアントが求めているのは、まず、特定の教師のコースに参加していないすべてのユーザーを選択することです。つまり、指定された教師のコースに参加したことがある場合、それらは表示されません。

2 番目に、クライアントは最初のクエリと同じクエリを希望していますが、それを過去 6 か月に制限しています。つまり、過去 6 か月以内に特定の教師のコースに参加していないすべてのユーザーを選択します。

これは私を少し困惑させたので、助けていただければ幸いです。

4

2 に答える 2

0
select username 
from user 
where userid not in 
(select userid 
from attendance a, course c 
where a.courseid = c.courseid and teacherid = {Value})
于 2013-09-06T11:26:02.823 に答える
0
SELECT u.username
FROM user u
LEFT JOIN attendance a
  ON u.userid = a.userid
LEFT JOIN course c
  ON c.courseid = a.courseid
  AND teacherid = [teacher id value]
WHERE a.courseid IS NULL

NOT IN サブクエリよりも高速な場合があります。MySQL は以前 (そしておそらく今も) サブクエリの最適化が苦手でした。

于 2013-09-06T13:18:13.967 に答える