2

さて、これが私が持っている既存のクエリで、必要なことを実行します。

SELECT C1.id AS id, C1.title AS title, C1.instructor_id AS instructor_id, 
  C1.description AS description, C1.date AS date, C1.starttime AS starttime, 
  C1.endtime AS endtime, C1.training_id AS training_id, C2.name AS name, 
  C2.id AS instructors_id 
FROM trainings C1 
LEFT JOIN instructors C2 ON C1.instructor_id = C2.id

しかし、私はそれに何かを追加する必要があります。持っているものに加えて、比較する必要のある2つのテーブルがあります。

テーブル「trainings」には、「id」でインデックス付けされたトレーニングセッションのリストがあります。また、別のテーブル「registrations」があります。このテーブルには、「id」-インデックス、「user_id」-トレーニングに登録したユーザーのID、「course_id」の3つの列を持つトレーニングセッションに登録したユーザーに関する情報が含まれています。 -トレーニングセッションのID。

既存のクエリに加えて行う必要があるのは、そのユーザーの「登録」に行がないトレーニングセッションのみを選択することです。

これが理にかなっていることを願っています。助けてくれる人に感謝します。私は何時間も試しました。クエリが大きすぎて、整理しておくことができず、その方法を適切に考えることができません。

4

1 に答える 1

6
SELECT C1.id AS id, C1.title AS title, C1.instructor_id AS instructor_id, 
  C1.description AS description, C1.date AS date, C1.starttime AS starttime, 
  C1.endtime AS endtime, C1.training_id AS training_id, C2.name AS name, 
  C2.id AS instructors_id 
FROM trainings C1 
LEFT JOIN instructors C2 ON C1.instructor_id = C2.id
LEFT JOIN registrations C3 ON < Whatever they're connected on >
WHERE C3.id IS NULL

基本的にJOINはそれも同様であり、それをフィルタリングすると、WHERE ... IS NULL結合されたLEFT JOINテーブルの列がとして返されNULLます。

于 2012-07-23T08:59:15.800 に答える