// UPDATE: Die angegebene Antwort funktionierte, aber ich stieß auf eine andere Situation. Wenn ein Student an eine andere Position wechselt, muss er das Guthaben von der Beendigung der vorherigen Position behalten, wenn es eine Überschneidung gibt. Siehe folgende Situation:MySQL Erforderliche Klasse anzeigen Abgeschlossen
Ich habe 2 Kurse, Kurs A und Kurs B, die für jeden der beiden Trainingscodes benötigt werden. Wenn ein Schüler Kurs A und Kurs B unter Trainingscode 10 belegt und dann zu einer neuen Position (Trainingscode 30) wechselt, wird eine Ausnahme angezeigt, da CourseA und CourseB nicht abgeschlossen werden, weil sich ihr Code geändert hat. Obwohl der Kurs der gleiche ist. Ich habe versucht, die Anzahl der Beschreibung zu vergleichen, aber es funktioniert nicht. Der Name des Kurses ist activityId auf der Trainingstabelle sowie die erforderliche Trainingstabelle von oben. Irgendwelche Gedanken? Danke
Ich versuche, ein MySql-Skript zu schreiben, um zu bestimmen, wenn ein Schüler alle Klassen von einer Liste des erforderlichen Trainings (Curriculum) vervollständigt oder nicht abgeschlossen hat. Im folgenden Beispiel muss ich zeigen, dass John Doe die Klasse 1,2 und 3 für Training Level 0 abgeschlossen hat. Ich muss auch zeigen, dass Jane Does nicht alle Klassen abgeschlossen hat, da Klasse 2 fehlt. Ich habe versucht, den Klassen eine Bestellnummer zuzuordnen, also wenn Sie zu Bestellnummer 3 (Class3) kommen, sind Sie abgeschlossen, aber ich vermisse Lücken, wenn der Schüler Klasse 2 nicht angenommen hat. Auch dies muss 1500 Studenten durchlaufen zeige wer hat/hat nicht erfüllt Level 0 training.
tbltraining
firstname
lastname
email
organization
activity
description
status
jobcode
Ex tbltraining
John | Doe | [email protected] | 1233 | Class1 | Certification | Completed | 030
John | Doe | [email protected] | 1233 | Class2 | Certification | Completed | 030
John | Doe | [email protected] | 1233 | Class3 | Certification | Completed | 030
John | Doe | [email protected] | 1233 | OtherClass | Certification | Completed | 030
John | Doe | [email protected] | 1233 | OtherClass2 | Certification | Completed | 030
Jane | Doe | [email protected] | 3311 | Class1 | Certification | Completed | 010
Jane | Doe | [email protected] | 3311 | Class3 | Certification | Completed | 010
James | Doe | [email protected] | 1233 | Class1 | Certification | Completed | 030
James | Doe | [email protected] | 1233 | Class2 | Certification | Incomplete | 030
tblreqtraining
trainingname
trainingdescription
trainingcode
traininglevel
Ex tblreqtraining
Class1 | Certification | 30 | 0
Class2 | Certification | 30 | 0
Class3 | Certification | 30 | 0
Class1 | Certification | 10 | 0
Class2 | Certification | 10 | 0
Class3 | Certification | 10 | 0
Class4 | Certification | 10 | 0
Activity
Bedürfnissetrainingname
Description
Bedürfnisse anzupassentrainingdescription
jobcode
Bedürfnisse anzupassen anzupassentrainingcode
Abfrage:
SELECT tra.firstname, tra.lastname, tra.email, tra.organization, tra.activity, tra.description,
tra.jobcode, req.trainingname, req.traininglevel, req.trainingcode
FROM tbltraining tra
RIGHT JOIN tblreqtraining req on tra.activity = req.trainingname and right(tra.jobcode, 2) = req.trainingcode
WHERE (right(tra.jobcode,2) = '30' or right(tra.jobcode,2) = '10')
and tra.description = 'Certification'
and tra.status = 'Completed'
and req.traininglevel = 0
Irgendwelche Gedanken oder Richtung auf diese würde geschätzt .
Es ist unklar, wie die Ergebnisse aussehen würden. –
Ich wäre in der Lage, eine Abfrage zu pullen, um eine Liste aller Schüler zu zeigen, die den Level 0-Lehrplan nicht abgeschlossen haben. Name, E-Mail, Jobcode, Organisation. Oder eine Liste derselben Spalten, die den Curriculum Level 0 abgeschlossen haben. – Jason
Wenn Sie 'RIGHT JOIN' verwenden, sollten Sie keine Bedingungen für die linke Tabelle in der' WHERE'-Klausel haben, sie sollten in der 'ON'-Klausel stehen. Sonst wirst du alle 'NULL' Werte aus nicht übereinstimmenden Zeilen herausfiltern, und es ist wie' INNER JOIN'. – Barmar