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

Übergeordnete Themen zu SchILD-NRW2

Moderatoren: Raffenberg, A. Schüller, Pfotenhauer

Antworten
RAP
Beiträge: 53
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: 2624
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