Runde Geburtstage ermitteln BASE SQL

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

gerald3659
*
Beiträge: 19
Registriert: Di, 14.12.2010 07:55

Runde Geburtstage ermitteln BASE SQL

Beitrag von gerald3659 »

Hallo die Damen und Herren SQL-Experten
ich bin SQL-Neuling (arbeite seit 3 Wochen damit) und will nun die runden Geburtstage meiner Vereinsmitglieder (Gewerkschaft) in der Firma anzeigen lassen.
Die Geburtstage sortiert anzeigen zu lassen kriege ich mit unten stehendem Statment ja noch hin.
aber wie zeige ich nur alle durch 10 teilbare an. Will heißen: Zeige mir alle an, welche in diesem Jahr 20, 30, 40 ... 100 werden an.
Die Zeilen 3 bis 5 also MONTH, DAY, YEAR benötige ich zur Sortierung des Berichtes, oder hat hier jemand eine bessere Lösung?

Code: Alles auswählen

    SELECT "mtg"."Nachname" + ( ', ' ) + "mtg"."Vorname" AS "Mitgliedsname",
                 "mtg"."Geboren",
                 MONTH( "mtg"."Geboren" ) AS "Monate",
                 DAY( "mtg"."Geboren" ) AS "Tage",
                YEAR( "mtg"."Geboren" ) AS "Jahre",
                 DATEDIFF( 'yy', "mtg"."Geboren", CURRENT_DATE ) AS "Alter",
                "mtg"."Straße",
                "pland"."Land_Wert" + ( ' - ' ) + "mtg"."PLZ" + ( ' ' ) + "mtg"."Ort" AS "Land - PLZ Ort",
                "pdienst"."Dienststelle"
    FROM "Mitglieder" AS "mtg",
             "Para_Dienstellen" AS
             "pdienst", "Para_Land" AS "pland"
    WHERE "mtg"."Dsid" = "pdienst"."ID"
               AND "mtg"."Landid" = "pland"."id"
              AND "mtg"."Austritt" IS NULL
    ORDER BY MONTH( "mtg"."Geboren" ), DAY( "mtg"."Geboren" ), YEAR( "mtg"."Geboren" )
Für eine Hlfe wäre ich sehr dankbar.
Nur tote Fische schwimmen mit dem Strom
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Runde Geburtstage ermitteln BASE SQL

Beitrag von DPunch »

Aloha

Ich gehe mal davon aus, dass Du die integrierte HSQL-DB verwendest, dort wäre die Syntax für durch 10 teilbare Zahlen:

Code: Alles auswählen

(...)
WHERE Mod("Alter",10) = 0
(...)
(Mod = Modulo = Divisionsrest)

bzw. im Kontext Deiner Abfrage:

Code: Alles auswählen

SELECT "mtg"."Nachname" + ( ', ' ) + "mtg"."Vorname" AS "Mitgliedsname",
                 "mtg"."Geboren",
                 MONTH( "mtg"."Geboren" ) AS "Monate",
                 DAY( "mtg"."Geboren" ) AS "Tage",
                YEAR( "mtg"."Geboren" ) AS "Jahre",
                 DATEDIFF( 'yy', "mtg"."Geboren", CURRENT_DATE ) AS "Alter",
                "mtg"."Straße",
                "pland"."Land_Wert" + ( ' - ' ) + "mtg"."PLZ" + ( ' ' ) + "mtg"."Ort" AS "Land - PLZ Ort",
                "pdienst"."Dienststelle"
    FROM "Mitglieder" AS "mtg",
             "Para_Dienstellen" AS
             "pdienst", "Para_Land" AS "pland"
    WHERE "mtg"."Dsid" = "pdienst"."ID"
               AND "mtg"."Landid" = "pland"."id"
              AND "mtg"."Austritt" IS NULL
              AND Mod("Alter",10) = 0
    ORDER BY MONTH( "mtg"."Geboren" ), DAY( "mtg"."Geboren" ), YEAR( "mtg"."Geboren" )
gerald3659 hat geschrieben:Die Zeilen 3 bis 5 also MONTH, DAY, YEAR benötige ich zur Sortierung des Berichtes, oder hat hier jemand eine bessere Lösung?
Für die Sortierung nach diesen Kriterien gibt es denke ich keinen anderen Weg.
Du musst MONTH, DAY und YEAR allerdings nicht in Deinem SELECT einschliessen, die Sortierung funktioniert auch "alleinstehend" (sprich die Zeilen 3-5 kannst Du problemlos rauslöschen).
gerald3659
*
Beiträge: 19
Registriert: Di, 14.12.2010 07:55

Re: Runde Geburtstage ermitteln BASE SQL

Beitrag von gerald3659 »

Hallo DPunch
bin neu im Forum,

die Antwort von Gast kam von mir,

Sorry, für die Fehler
Nur tote Fische schwimmen mit dem Strom
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Runde Geburtstage ermitteln BASE SQL

Beitrag von DPunch »

Aloha
Gast hat geschrieben:Du hast recht, in der Abfrage funktioniert die Sortierung auch alleinstehend,aber sobald ich einen Bericht erstelle, OO3.2.1, scheint OO die Sortierung der Abfrage zu vergessen.
Bei Berichten kann ich Dir leider nicht weiterhelfen, aber da wird sicher jemand Anderes was zu sagen können.
Antworten