JOINの概念を説明するチュートリアルや例が多数ありますが、私は特定のシナリオに例を適用するのに苦労しています。私はいくつかの助けに感謝し、もしそれがあまりにも多くのことを求めていないなら、望ましい結果を達成するために解決策において何が起こっているのかを打破してください。3つのテーブルから行を選択する
3テーブル:ユーザー、評価、assessment_log。
ユーザー
+--------+------+------+-----------+----------+-----------+-------+--------+-----------+---------------+------+----------+
| UserID | User | Pass | FirstName | LastName | LastLogin | Email | Mobile | Kenitalla | AccountStatus | Role | Operator |
+--------+------+------+-----------+----------+-----------+-------+--------+-----------+---------------+------+----------+
評価
+--------------+------+-----------+-----------+-----------+-----------+-----------+--------------+----------+---------+----------+
| AssessmentID | Name | Criteria1 | Criteria2 | Criteria3 | Criteria4 | Criteria5 | RoleRequired | Required | Renewal | Operator |
+--------------+------+-----------+-----------+-----------+-----------+-----------+--------------+----------+---------+----------+
assessment_logs
+-----------------+------+----------------+------------+--------+-----------+----------+----------+----------+----------+----------+----------+---------+---------------+---------+
| AssessmentLogID | Date | AssessmentName | AssessedBy | UserID | StaffName | Comments | Verdict1 | Verdict2 | Verdict3 | Verdict4 | Verdict5 | Verdict | RenewalPeriod | NextDue |
+-----------------+------+----------------+------------+--------+-----------+----------+----------+----------+----------+----------+----------+---------+---------------+---------+
ユーザーが評価を取り、エントリがassessment_logにして行きます。一部の評価は必須です(必須の列では真または偽)。 RoleRequired列には、評価が必要なユーザーロールが指定されています。
まだ受け入れていないユーザーと評価のリストを生成したいと思います。アセスメントは必須であり、必要な役割はユーザーの役割と一致する必要があります。評決列に「合格」と記載されたassessment_logへの入力がない場合、評価がまだ合格していないことを示します。平野話すに
、私は次のような結果を達成しますクエリを探しています:+------------------+-----------------+----------------+
| assessments.Name | users.FirstName | users.LastName |
+------------------+-----------------+----------------+
評価が必要です(必須真等しい)、RequiredRoleはusers.Role列に一致し、そこに「評価」列に「合格」値がある評価については、assessmentments_logには記入されていません。
さらなる説明が必要な場合は教えてください。
ありがとうございます!
これは私がそのためにあなたに感謝expect-結果を与えるようです! LEFT JOINを詳しく見ていきます...あなたの明確な例と説明でも、私はそのコンセプトに苦しんでいます。 LEFT JOINに追加の基準をチェーンしているかのように思えます。読んでいる例は、あるテーブルから行を選択し、行が一致する2番目のテーブル(右側)から行を戻すことです。 "AND al.UserID = u.UserID"と "AND al。Verdict = 'Pass' "クエリの部分? –
http://www.mysqltutorial.org/mysql-left-join.aspx通常の(内部)結合と同じように動作します。したがって、LEFT JOIN B ON(cond)WHERE b.id IS NULLは、b内の行がない(cond)行を返します。とった? – peufeu