sql-Elternexport für IServ

Übergeordnete Themen zu SchILD-NRW2

Moderatoren: A. Schüller, Raffenberg, Pfotenhauer

Benutzeravatar
Raffenberg
Beiträge: 3040
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: sql-Elternexport für IServ

Beitrag von Raffenberg »

In IServ werden alle Schüler mit einer ID angelegt. Hierzu wird entweder die in Schild übliche GUID importiert. Bei einem späteren Abgleich der Daten zwischen Schild und IServ wird diese GUID/ID verwendet.

Damit die erzieherdaten dementsprechenden Schüler zugeordnet werden können, muss ebenfalls diese GUID bzw ID übergeben werden.

Aus dem Kopf heraus: sie müssen in der Where-Klausel folgendes ergänzen:
ErhaeltAnschreiben = '+'
Mit freundlichen Grüßen
Jens Raffenberg
Ado
Beiträge: 15
Registriert: Freitag 1. April 2022, 10:11
Schulform: Gymnasium

Re: sql-Elternexport für IServ

Beitrag von Ado »

Hallo,

danke schön für die schnelle Hilfe.

Hier der erweiterte Befehl, so dass nur Erzieher aufgeführt werden, die ein Anschreiben erhalten:

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname1 <> '' and e.Name1 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+')
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname2 <> '' and e.Name2 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+')
Order By s.ID
Ado
Beiträge: 15
Registriert: Freitag 1. April 2022, 10:11
Schulform: Gymnasium

Re: sql-Elternexport für IServ

Beitrag von Ado »

Hallo nochmal,

neues Jahr - neue Frage :-):

Dieser Befehl hat letztes Jahr gut funktioniert:

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname1 <> '' and e.Name1 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+')
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname2 <> '' and e.Name2 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+')
Order By s.ID

Frage:
Gibt es eine Möglichkeit den Befehl so zu erweitern, dass er nur Erzieher ausgibt, die zu einem Kind gehören, welches aktuell in der Jahrgangsstufe 5 ist?

Vielen lieben Dank schonmal im Voraus!
Lg
011marTusch
Beiträge: 338
Registriert: Montag 3. Dezember 2018, 19:50
Schulform: - keine Schule -

Re: sql-Elternexport für IServ

Beitrag von 011marTusch »

Hallo,

damit bekomme ich ein Ergebnis:

Code: Alles auswählen

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname1 <> '' and e.Name1 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and e.ErzAnschreiben = '+' and s.Jahrgang=5)
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname2 <> '' and e.Name2 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and e.ErzAnschreiben = '+' and s.Jahrgang=5)
Order By s.ID
Meine Testdatenbank ist allerdings etwas struppig. Daher bitte auf Plausibilität prüfen.
Viele Grüße aus Wuppertal
Ottmar Tusch
Pensionist :geek:
Ado
Beiträge: 15
Registriert: Freitag 1. April 2022, 10:11
Schulform: Gymnasium

Re: sql-Elternexport für IServ

Beitrag von Ado »

Hallo,

vielen lieben Dank. Das hat mir sehr geholfen!
Ich musste den Befehl nur noch minimal abändern. Denn s.Jahrgang gibt wohl die Schulbesuchsjahre an und nicht den Jahrgang. Hierfür habe ich ASDJahrgang verwendet.

So funktioniert er bei mir:

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname1 <> '' and e.Name1 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+' and ASDJahrgang='05')
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname2 <> '' and e.Name2 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and ErzAnschreiben = '+' and ASDJahrgang='05')
Order By s.ID

Lg M. Ado
K. Berger
Beiträge: 41
Registriert: Montag 27. Mai 2019, 13:54
Wohnort: Duisburg
Schulform: Gymnasium

Re: sql-Elternexport für IServ

Beitrag von K. Berger »

Hallo,
ich habe den sql-Befehl von oben für unsere Bedürfnisse angepasst, er funktioniert lokal mit einer Testdatenbank und einer nicht ganz aktuellen SchILD-Version (mdb-Datenbank) problemlos:

Code: Alles auswählen

Select * From
(select s.ID AS SID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID, e.ErzAnschreiben From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname1 <> '' and e.Name1 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and e.ErzAnschreiben='+')
Union All
(select s.ID AS SID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID, e.ErzAnschreiben From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where e.Vorname2 <> '' and e.Name2 <> '' and e.erzieherart_ID <> 3 and e.erzieherart_ID <> 4 and s.Status=2 and e.ErzAnschreiben='+')
Order By SID
In der Schule (2.0.34.2, SQL-Datenbank) erhalte ich folgende Fehlermeldung:"Fehler bei der Ausführung: Incorrect syntax near the keyword 'union'".
Wer weiß Rat?
Viele Grüße
Kay Berger
waedt
Fachberater*in
Beiträge: 230
Registriert: Dienstag 4. Dezember 2018, 08:37
Schulform: Realschule

Re: sql-Elternexport für IServ

Beitrag von waedt »

Hallo,
wir exportieren und nutzen Excel mit Query-Abfragen um die Daten für iServ vorzubereiten:

1. Alle SuS müssen sichtbar sein (keine Filter!)
2. Datenaustausch - Export in Text/Excel-Datei - Exportieren
3. Alle Eltern (1. und 2. Person) wie folgt exportieren
- Vorlage laden "Export 1. Person aus Schild nach iServ" und exportieren
- Vorlage laden "Export 2. Person aus Schild nach iServ" und exportieren

5. Die Excel-Datei "Erzieher" öffnen und mit Query-Abfragen in den Mappen Erzieher01, Erzieher02 und Erzieher aktualisieren
7. In der Mappe Erzieher stehen dann alle Erzieher untereinander nach Schüler-ID sortiert
8. In die Mappe Export wechseln
- prüfen, ob in der Tabelle alle Zeilen aus der Mappe Erzieher verknüft wurden
- Die Excel-Tabelle speichern
- Die Daten aus der Mappe Export als CSV-Datei speichern in der Datei "Erzieher.csv"
Diese csv-Datei wird in iServ importiert

9 Nach iServ wechseln
10 Die csv-Datei der Eltern mit dem Eltern-Import-Profil importieren
MfG
J. Waedt
Benutzeravatar
Raffenberg
Beiträge: 3040
Registriert: Dienstag 25. September 2018, 15:22
Schulform: Gymnasium
Kontaktdaten:

Re: sql-Elternexport für IServ

Beitrag von Raffenberg »

Copilot meldet folgendes hierzu:
Es scheint, dass die SQL-Syntax in einer SQL-Datenbank etwas anders ist als in Access. Hier sind einige Anpassungen, die du vornehmen kannst, um die Abfrage in einer SQL-Datenbank korrekt auszuführen:

1. **Klammern um die Union-Abfragen**: SQL-Datenbanken benötigen oft Klammern um die einzelnen Abfragen, die durch `UNION` verbunden sind.
2. **Alias für die Union-Abfrage**: Manchmal hilft es, der gesamten Union-Abfrage einen Alias zu geben.

Hier ist eine angepasste Version deiner Abfrage:

Code: Alles auswählen

SELECT * FROM (
    (SELECT s.ID AS SID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID, e.ErzAnschreiben 
     FROM SchuelerErzAdr AS e
     INNER JOIN Schueler AS s ON s.ID = e.Schueler_ID
     WHERE e.Vorname1 <> '' AND e.Name1 <> '' AND e.erzieherart_ID <> 3 AND e.erzieherart_ID <> 4 AND s.Status = 2 AND e.ErzAnschreiben = '+')
    UNION ALL
    (SELECT s.ID AS SID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID, e.ErzAnschreiben 
     FROM SchuelerErzAdr AS e
     INNER JOIN Schueler AS s ON s.ID = e.Schueler_ID
     WHERE e.Vorname2 <> '' AND e.Name2 <> '' AND e.erzieherart_ID <> 3 AND e.erzieherart_ID <> 4 AND s.Status = 2 AND e.ErzAnschreiben = '+')
) AS UnionQuery
ORDER BY SID;
Versuche diese Anpassungen und lass mich wissen, ob es funktioniert! 😊
Mit freundlichen Grüßen
Jens Raffenberg
Frodermann
Fachberater*in
Beiträge: 957
Registriert: Montag 29. Oktober 2018, 20:45
Schulform: Gesamtschule
Motto: Keine Panik

Re: sql-Elternexport für IServ

Beitrag von Frodermann »

Ahaaha, der Herr Chatbot ist nun auch Fachberater hier. ;)

Sachlicher Beitrag: Bei SQL-Dialekten (untereinander und/oder zu MS Access) unterscheiden sich auch manchmal die zu verwendenden Anführungszeichen " oder ' oder... das wäre dann ebenfalls anzupassen.
mit freundlichen Grüßen
Felix Frodermann
Fachberatung, Moderation & SVWS-Dokumentation - Korrekturen oder Wünsche bezüglich des Wikis und der SVWS-Webclient-Doku können Sie mir gerne über die hier im Forum hinterlegte Emailadresse zukommen lassen.
nilleholger
Beiträge: 28
Registriert: Dienstag 26. Mai 2020, 08:55
Schulform: Gesamtschule

Re: sql-Elternexport für IServ

Beitrag von nilleholger »

Wir arbeiten seit Jahren mit dieser Lösung gut:

Code: Alles auswählen

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where Geloescht <> '+' and e.Vorname1 <> '' and e.Name1 <> '' and s.Status=2 and e.erzieherart_ID <> 3 and  e.erzieherart_ID <> 4 and ErzAnschreiben = '+')
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where Geloescht <> '+' and e.Vorname2 <> '' and e.Name2 <> '' and s.Status=2 and e.erzieherart_ID <> 3 and  e.erzieherart_ID <> 4  and ErzAnschreiben = '+')
Order By s.ID
Allerdings werden zu SuS, die in SchiLD als volljährig deklariert wurden, die Eltern nicht mehr exportiert und sind daher in iServ auch nich mehr zu erreichen. Dennoch wollen wir die Eltern aber weiter über Elternbreife erreichen (um über Schulfeste, Busausfälle, Abschlussfeiern und dergleichen zu informieren). Ich habe den Code also wie folgt angepasst:

Code: Alles auswählen

Select * From
(select s.ID, e.Name1, e.Vorname1, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where Geloescht <> '+' and e.Vorname1 <> '' and e.Name1 <> '' and s.Status=2 and ErzAnschreiben = '+')
Union All
(select s.ID, e.Name2, e.Vorname2, e.ErzStrasse, e.ID From SchuelerErzAdr as e
Inner Join Schueler as s on s.ID = e.Schueler_ID
Where Geloescht <> '+' and e.Vorname2 <> '' and e.Name2 <> '' and s.Status=2 and ErzAnschreiben = '+')
Order By s.ID
Aber nun werden mir die volljährigen SuS als ihre eigenen Eltern exportiert, was beim iServ-Import der ELtern nicht hilfreich ist.

Kann ich SchILD weiter überzeugen, mir auch die Eltern volljähriger SuS zu exportieren?
Antworten

Zurück zu „Allgemeines“