bei uns haben die vorgeschlagenen Optionen alle keine Ergebnisse gebracht, deshalb hier eine SQL-Lösung für Interessierte:
Code: Alles auswählen
SELECT
s.ID AS id,
CASE
# Ggf. weitere Geschlechter nachpflegen, falls vorhanden
WHEN s.Geschlecht = '3' then 'm'
WHEN s.Geschlecht = '4' then 'w'
ELSE 'k.A.'
END AS Geschlecht,
MAX(CASE
WHEN e.AbiFach = '2' THEN
CASE
# Ggf. weitere Fachkürzel nachpflegen, je nach Schild-Kürzel anpassen (auch bei den folgenden CASE-Abfragen)
WHEN e.FachKrz = 'BI' THEN 'bio'
WHEN e.FachKrz = 'D' THEN 'd'
ELSE e.FachKrz
END
END) as PBLK_Krz,
MAX(CASE WHEN e.AbiFach = '2' THEN e.AbiPruefErgebnis END) as PBLK_Erg,
MAX(CASE
WHEN e.AbiFach = '1' THEN
CASE
WHEN e.FachKrz = 'G' THEN 'ges'
WHEN e.FachKrz = 'EW' THEN 'ew'
ELSE e.FachKrz
END
END) as WLK_Krz,
MAX(CASE WHEN e.AbiFach = '1' THEN e.AbiPruefErgebnis END) as WLK_Erg,
MAX(CASE
WHEN e.AbiFach = '3' THEN
CASE
WHEN e.FachKrz = 'REL' THEN
CASE
# Da die Filterung nach Kursen aufwändig ist, haben wir hier nach Fachlehrer gefiltert. Ggf. um CASE ergänzen, falls mehrere Fachlehrer tätig sind.
WHEN e.Fachlehrer = 'STÜ' THEN 'rel_evang'
ELSE 'rel_kath'
END
WHEN e.FachKrz = 'D' THEN 'd'
WHEN e.FachKrz = 'E' THEN 'e'
ELSE e.FachKrz
END
END) as GK_Krz,
MAX(CASE WHEN e.AbiFach = '3' THEN e.AbiPruefErgebnis END) as GK_Erg,
CASE
WHEN abi.Note REGEXP '^[0-3]' THEN abi.Note
ELSE 'k.A.'
END AS Abi_Durchschnitt,
CASE
WHEN abi.PruefungBestanden = '+' THEN 'bestanden'
ELSE 'nicht bestanden'
END AS Abi_Status
FROM
schueler s
JOIN
schuelerabifaecher e ON s.ID = e.Schueler_ID
JOIN
schuelerabitur abi ON s.ID = abi.Schueler_ID
WHERE
# Klassenbezeichnung durch eigene Angabe ersetzen
Klasse = 'DGA20A' AND AbiPruefErgebnis IS NOT NULL
GROUP BY
s.ID;