SQL ist eine genormte Abfragesprache von relationalen Daten, wie z. B. MS-SQL, welche von SPG-Verein 4 genutzt wird. In manchen Fällen lassen sich nicht alle Abfragewünsche mit der grafischen Oberfläche realisieren. Daher gibt es in SPG-Verein 4 auch die Möglichkeit, diese Befehle direkt einzugeben. Das Ergebnis ist dann immer eine bestimmte Menge an Mitgliedsnummern (MitgliedID), die überall im Programm als Selektion genutzt werden kann. Das Ergebnis wird immer aktuell neu aufgebaut, ist also auch dynamisch und nicht statisch. Im Internet findet man diverse Quellen zum Erlernen dieser SQL-Syntax. Zum Beispiel
hier
Neue SQL-Selektion erstellen:
SQL Befehl eingeben und mit Vorschau testen:
Diese Selektion kann dann an vielen Stellen im Programm genutzt werden:
Alle Mitglieder, die in den nächsten 30 Tagen Geburtstag haben:
SELECT MitgliedId FROM tbl_Mitglied
WHERE DATEADD(YEAR, DATEDIFF(YEAR, Geburtsdatum, GETDATE()), Geburtsdatum) BETWEEN GETDATE() AND DATEADD(DAY, 30, GETDATE())
Alle Mitglieder, die in den nächsten 30 Tagen Geburtstag haben, aber noch nicht ausgetreten sind:
SELECT MitgliedId FROM tbl_Mitglied
WHERE DATEADD(YEAR, DATEDIFF(YEAR, Geburtsdatum, GETDATE()), Geburtsdatum) BETWEEN GETDATE() AND DATEADD(DAY, 30, GETDATE())
AND (Austritt_Datum IS NULL OR Austritt_Datum>GETDATE())
Alle Mitglieder, die dieses Jahr bestimmte Geburtstage haben:
SELECT MitgliedID FROM tbl_Mitglied WHERE YEAR(GETDATE())-YEAR(Geburtsdatum) IN(25, 40, 50, 60, 70, 75, 80, 85, 90, 95, 100)
Alle Mitglieder, die dieses Jahr den 25,30,40,50 Hochzeitstag (falls dieser im Datum_1 gepflegt wurde) haben:
SELECT MitgliedID FROM tbl_Mitglied
WHERE YEAR(GETDATE()) -YEAR(Datum_1) IN(25,30,40,50)
In diesem Beispiel speichern wir das Hochzeitsdatum in dem Feld "Datum 1"
Das Ergebnis können Sie dann z.B. über die Mitgliederliste Schmalschrift ("Mitglieder" > "Mitgliederlisten" > "Liste(4) - Schmalschrift") ausgeben lassen:
Alle Mitglieder, die mit Beiträgen und Spenden mindestens 250.-€ gezahlt haben:
SELECT MitgliedID FROM tbl_Mitglied WHERE gezahlte_Betraege+Spende>250
Alle Mitglieder, die im Februar als Sonderzahlweise ein j für jährlich haben:
SELECT MitgliedID FROM tbl_Mitglied_Abteilung_Beitrag WHERE Sonderzahlweise='.j..........'
Alle Mitglieder, die in mindestens 2 Abteilungen sind:
SELECT DISTINCT MitgliedID
FROM tbl_Mitglied_Abteilung_Beitrag AS m
GROUP BY MitgliedID
HAVING COUNT(DISTINCT m.MitglAbteilungID ) >= 2
Sortierungen nur mit TOP Angabe:
SELECT TOP 10000 MitgliedId
FROM tbl_Mitglied
WHERE Austritt_Datum IS NOT NULL
ORDER BY YEAR(Austritt_Datum ) DESC, MONTH(Austritt_Datum) ASC, DAY(Austritt_Datum) ASC