クラス
- ClassId(PK)
- クラス名
- ClassCapacity
バッチ
- BatchId(PK)
- BatchName
- サイズ
- ステータス{未開始、登録済み、完了済み}
BatchClass
- BatchClassId(PK)
- BatchId(FK)
- ClassId(FK)
- NoOfStudents
関係
- クラスには最大容量があるため、バッチには多くのクラスを含めることができますが、特定の時点で、ステータスが=登録済みの1つのバッチにのみクラスを割り当てることができます(これはアプリケーション側から検証されます)
ステータスが登録済みと等しくないバッチに現在割り当てられていないすべてのクラスを取得したい
これは私が試したものです、
SELECT C.*
FROM Class C
LEFT JOIN (
Batch B
INNER JOIN BatchClass BC
ON B.BatchId = BC.BatchId
) ON C.ClassId = BC.ClassId
WHERE B.Status <> "Enrolled";
WHERE B.Status = "Enrolled"を試してみると、バッチが登録されているすべてのクラスが表示されます。私が欲しいのは、SQLの上からはうまくいかなかった反対です。
デザインまたはSQLステートメントに問題があるかどうかはわかりません。助けてください。前もって感謝します。