Hier sind die Inhalte der Tabellen.Wie NULL-Werte zurückgegeben werden, wenn mehrere Tabellen verbunden werden
mysql> desc student;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| name | varchar(20) | NO | | NULL | |
| sex | enum('F','M') | NO | | NULL | |
| student_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
+------------+------------------+------+-----+---------+----------------+
mysql> desc grade_event;
+----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| date | date | NO | | NULL | |
| category | enum('T','Q') | NO | | NULL | |
| event_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
+----------+------------------+------+-----+---------+----------------+
mysql> desc score;
+------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+-------+
| student_id | int(10) unsigned | NO | PRI | NULL | |
| event_id | int(10) unsigned | NO | PRI | NULL | |
| score | int(11) | NO | | NULL | |
+------------+------------------+------+-----+---------+-------+
Was ich versuche zu erreichen, anzuzeigen, welche Schüler ein Quiz/Test verpasst haben, unter ‚Kategorie‘ Tabelle in der grade_event gefunden.
Hier ist, was ich mir ausgedacht habe, aber keine Ergebnisse erziele;
select name, category, sc.event_id
from student s
join score sc on s.student_id=sc.student_id
join grade_event ge on sc.event_id=ge.event_id
where score is NULL
group by name, event_id;
Ich habe auch den Weg der Versuch einer Unterabfrage gegangen;
select name, category, sc.event_id
from student s
join score sc on s.student_id=sc.student_id
join grade_event ge on sc.event_id=ge.event_id
where score not in (select score from score)
group by name, event_id;
Jede Hilfe würde geschätzt.
Ich machte die vorgeschlagenen Änderungen, aber ich gebe immer noch eine leere Reihe von Ergebnissen. Mit der Unterabfrage macht das Sinn. Was wäre eine bessere Möglichkeit zur Abfrage? –
Ersetzen der beiden Joins durch Links Join funktioniert nicht? Vielleicht ist es Differenzen zwischen SQL-Server und MySQL, es würde in SQL arbeiten, wie ich verstehe, wie Ihre Tabellen erstellt werden. Wie auch immer, @Shadow lieferte eine funktionierende Lösung – BD01