Kollision von Lehrerkürzeln (MySQL, BINARY-Operator)

Alles, was zur Eingabe und Problemen bei Lehrerdatensätzen passt.

Moderatoren: Raffenberg, A. Schüller, Pfotenhauer

Antworten
RAP
Beiträge: 44
Registriert: Montag 28. Januar 2019, 21:41
Schulform: Gymnasium

Kollision von Lehrerkürzeln (MySQL, BINARY-Operator)

Beitrag von RAP »

Hallo.

Bei uns an der Schule sind in Schild die Kürzel "Su" und "" vergeben.

Datenbanksystem: MySQL

Bei der Abfrage von Klassenunterrichten mittels SQL traf ich auf folgende Spezialität.

Code: Alles auswählen

SELECT SLA.Klasse                                                                                            
    ->  , SLD.Wochenstunden                                                                                                         
    ->  , ESF.FachKrz                                                                                                               
    ->  , ESF.Bezeichnung                                                                                                           
    ->  , COUNT(SLA.Klasse) As AnzGesamt                                                                                            
    ->  FROM   SchuelerLeistungsdaten SLD                                                                                           
    ->       , SchuelerLernabschnittsdaten SLA                                                                                      
    ->       , EigeneSchule_Faecher ESF                                                                                             
    ->       , Schueler S                                                                                                           
    ->  WHERE SLA.Id = SLD.Abschnitt_ID                                                                                             
    ->  AND ESF.ID = SLD.Fach_ID                                                                                                    
    ->  AND S.ID = SLA.Schueler_ID                                                                                                  
    ->  AND S.Status = 2                                                                                                            
    ->  AND SLA.Jahr = 2022                                                                                                         
    ->  AND SLA.Abschnitt = 1                                                                                                       
    ->  AND SLD.Kursart = 'PUK'                                                                                                     
    ->  AND SLD.FachLehrer = 'Su'                                                                                                   
    ->  GROUP BY Klasse, FachKrz ;
    
liefert

Code: Alles auswählen

+--------+---------------+---------+-------------+-----------+                                                                      
| Klasse | Wochenstunden | FachKrz | Bezeichnung | AnzGesamt |                                                                      
+--------+---------------+---------+-------------+-----------+                                                                      
| 08b    |             3 | M       | Mathematik  |        25 |                                                                      
| 09a    |             3 | D       | Deutsch     |        22 |                                                                      
| 09c    |             2 | GE      | Geschichte  |        26 |                                                                      
+--------+---------------+---------+-------------+-----------+                                       
Die Abfrage mit 'Sü' als Lehrerkürzel liefert genau das gleiche Ergebnis. Allerdings sind beide falsch.

Erst mit dem Operator BINARY erhalte ich die richtigen Ausgaben:

Code: Alles auswählen

SELECT SLA.Klasse                                                                                            
    ->  , SLD.Wochenstunden                                                                                                         
    ->  , ESF.FachKrz                                                                                                               
    ->  , ESF.Bezeichnung                                                                                                           
    ->  , COUNT(SLA.Klasse) As AnzGesamt                                                                                            
    ->  FROM   SchuelerLeistungsdaten SLD                                                                                           
    ->       , SchuelerLernabschnittsdaten SLA                                                                                      
    ->       , EigeneSchule_Faecher ESF                                                                                             
    ->       , Schueler S                                                                                                           
    ->  WHERE SLA.Id = SLD.Abschnitt_ID                                                                                             
    ->  AND ESF.ID = SLD.Fach_ID                                                                                                    
    ->  AND S.ID = SLA.Schueler_ID                                                                                                  
    ->  AND S.Status = 2                                                                                                            
    ->  AND SLA.Jahr = 2022                                                                                                         
    ->  AND SLA.Abschnitt = 1                                                                                                       
    ->  AND SLD.Kursart = 'PUK'                                                                                                     
    ->  AND BINARY SLD.FachLehrer = 'Sü'                                                                                                   
    ->  GROUP BY Klasse, FachKrz ;

Code: Alles auswählen

+--------+---------------+---------+-------------+-----------+
| Klasse | Wochenstunden | FachKrz | Bezeichnung | AnzGesamt |
+--------+---------------+---------+-------------+-----------+
| 09a    |             3 | D       | Deutsch     |        22 |
| 09c    |             2 | GE      | Geschichte  |        26 |
+--------+---------------+---------+-------------+-----------+
und mit

Code: Alles auswählen

SELECT SLA.Klasse                                                                                            
    ->  , SLD.Wochenstunden                                                                                                         
    ->  , ESF.FachKrz                                                                                                               
    ->  , ESF.Bezeichnung                                                                                                           
    ->  , COUNT(SLA.Klasse) As AnzGesamt                                                                                            
    ->  FROM   SchuelerLeistungsdaten SLD                                                                                           
    ->       , SchuelerLernabschnittsdaten SLA                                                                                      
    ->       , EigeneSchule_Faecher ESF                                                                                             
    ->       , Schueler S                                                                                                           
    ->  WHERE SLA.Id = SLD.Abschnitt_ID                                                                                             
    ->  AND ESF.ID = SLD.Fach_ID                                                                                                    
    ->  AND S.ID = SLA.Schueler_ID                                                                                                  
    ->  AND S.Status = 2                                                                                                            
    ->  AND SLA.Jahr = 2022                                                                                                         
    ->  AND SLA.Abschnitt = 1                                                                                                       
    ->  AND SLD.Kursart = 'PUK'                                                                                                     
    ->  AND BINARY SLD.FachLehrer = 'Sü'                                                                                                   
    ->  GROUP BY Klasse, FachKrz ;

Code: Alles auswählen

+--------+---------------+---------+-------------+-----------+
| Klasse | Wochenstunden | FachKrz | Bezeichnung | AnzGesamt |
+--------+---------------+---------+-------------+-----------+
| 08b    |             3 | M       | Mathematik  |        25 |
+--------+---------------+---------+-------------+-----------+
Nun meine Frage: Ist Schild auf diese Situation vorbereitet (und nutzt BINARY) oder sollte ich der Schulleitung die Wahl anderer Kürzel nahe legen?

Vielen Dank und Gruß,
RAP
Benutzeravatar
Raffenberg
Beiträge: 2230
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: Kollision von Lehrerkürzeln (MySQL, BINARY-Operator)

Beitrag von Raffenberg »

Hat die Datenbank folgendes Schema?
Zeichensatz UTF8
Collation UTF8_bin

Was meinen Sie mit "Ist Schild auf diese Situation vorbereitet"? Mir fällt keine Stelle ein, an der das bisher Probleme verursacht hätte.
Mit freundlichen Grüßen
Jens Raffenberg
Antworten

Zurück zu „Verwaltung Lehrkräfte“