AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] zusätzliche Bedingung für INNER JOIN

[SQL] zusätzliche Bedingung für INNER JOIN

Ein Thema von Evian · begonnen am 15. Jan 2008 · letzter Beitrag vom 15. Jan 2008
Antwort Antwort
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#1

[SQL] zusätzliche Bedingung für INNER JOIN

  Alt 15. Jan 2008, 14:42
Datenbank: MS SQL Server • Version: 2000 • Zugriff über: per ACCESS-Frontend bzw. SQL Server Enterprise Manager
Hallo Zusammen,

ich möchte eine MS SQL-Server-View per INNER JOIN mit einer bestimmten Tabelle zu einer neuen Sicht verknüpfen. ->

http://www.phillsoft.de/Phill/work/abfrage.JPG

Soweit ist das kein Problem. Nun kann es aber in der Tabelle tPersonal_Aenderungen mehrere Datensätze geben, die zu einem bestimmten Mitarbeiter (tPersonal_fest) gehören. Praktisch ist aber immer nur ein Datensätz aktuell bzw. relevant... und zwar jeweils der, bei dem Aenderungsdatum_Beginn < now() und Aenderungsdatum_Ende > now() ist.

Meine Abfrage sieht im Moment wie folgt aus:

SQL-Code:
SELECT TOP 100 PERCENT dbo.sBer_PersPlanUebersicht.PK_tPersonal, dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest,
                      dbo.sBer_PersPlanUebersicht.Nachname, dbo.sBer_PersPlanUebersicht.Vorname, YEAR(dbo.sBer_PersPlanUebersicht.Datum) AS Jahr,
                      SUM(dbo.sBer_PersPlanUebersicht.Brutto) AS Brutto, SUM(dbo.sBer_PersPlanUebersicht.Urlaubsgeld) AS Urlaubsgeld,
                      SUM(dbo.sBer_PersPlanUebersicht.Weihnachtsgeld) AS Weihnachtsgeld, SUM(dbo.sBer_PersPlanUebersicht.Einmalzahlung) AS Einmalzahlung,
                      SUM(dbo.sBer_PersPlanUebersicht.VWL_AG) AS VWL_AG, SUM(dbo.sBer_PersPlanUebersicht.BAV_AG) AS BAV_AG,
                      SUM(dbo.sBer_PersPlanUebersicht.Brutto + dbo.sBer_PersPlanUebersicht.Urlaubsgeld + dbo.sBer_PersPlanUebersicht.Weihnachtsgeld + dbo.sBer_PersPlanUebersicht.Einmalzahlung
                       + dbo.sBer_PersPlanUebersicht.VWL_AG + dbo.sBer_PersPlanUebersicht.BAV_AG - dbo.sBer_PersPlanUebersicht.BAV_AG - dbo.sBer_PersPlanUebersicht.BAV_AG)
                       AS SVBrutto,
                      SUM(dbo.sBer_PersPlanUebersicht.Brutto + dbo.sBer_PersPlanUebersicht.Urlaubsgeld + dbo.sBer_PersPlanUebersicht.Weihnachtsgeld + dbo.sBer_PersPlanUebersicht.Einmalzahlung
                       + dbo.sBer_PersPlanUebersicht.VWL_AG + dbo.sBer_PersPlanUebersicht.BAV_AG) AS AGBrutto,
                      SUM(dbo.sBer_PersPlanUebersicht.Nettobetrag - dbo.sBer_PersPlanUebersicht.VWL_Sparbetrag - dbo.sBer_PersPlanUebersicht.Pfaendung)
                      AS zbetrag, SUM(dbo.sBer_PersPlanUebersicht.Nettobetrag) AS Nettobetrag, SUM(dbo.sBer_PersPlanUebersicht.AlleAGAnteile) AS AlleAGAnteile,
                      SUM(dbo.sBer_PersPlanUebersicht.Pauschalsteuer) AS Pauschalsteuer, SUM(dbo.sBer_PersPlanUebersicht.Umlageversicherung1)
                      AS Umlageversicherung1, SUM(dbo.sBer_PersPlanUebersicht.Umlageversicherung2) AS Umlageversicherung2, dbo.tPersonal_Aenderungen.Bat,
                      dbo.tPersonal_Aenderungen.Urlaubsanspruch
FROM dbo.sBer_PersPlanUebersicht INNER JOIN
                      dbo.tPersonal_Aenderungen ON dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest = dbo.tPersonal_Aenderungen.FK_tPersonal_fest
GROUP BY dbo.sBer_PersPlanUebersicht.PK_tPersonal, dbo.sBer_PersPlanUebersicht.Nachname, dbo.sBer_PersPlanUebersicht.Vorname,
                      YEAR(dbo.sBer_PersPlanUebersicht.Datum), dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest, dbo.tPersonal_Aenderungen.Bat,
                      dbo.tPersonal_Aenderungen.Urlaubsanspruch
ORDER BY dbo.sBer_PersPlanUebersicht.Nachname
Ich schätze ich hätte im Seminar "grundlagen SQL" besser aufpassen sollen, aber leider weiß ich einfach nicht mehr, wie ich dem Join eine zusätzliche Bedingung geben kann. Wie gesagt, es sollen nur die aktuellen Datensätze aus tPersonal_Aenderungen Teil der Abfrage sein. Kann mir jemand einen Tip geben?

vielen Dank,

Phill
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#2

Re: [SQL] zusätzliche Bedingung für INNER JOIN

  Alt 15. Jan 2008, 14:47
ok Danke ,

hat sich schon erledigt... ich machs einfach per:

SQL-Code:
HAVING (dbo.tPersonal_Aenderungen.Aenderungsdatum_Beginn < { fn NOW() }) AND (dbo.tPersonal_Aenderungen.Aenderungsdatum_Ende > { fn NOW() } OR
                      dbo.tPersonal_Aenderungen.Aenderungsdatum_Ende IS NULL)
sofern die Clowns von der Buchhaltung nicht wieder mehrere gültige Datensätze eingegeben haben, dürfte es da eigentlich kein Problem geben.

lg,

Phill
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [SQL] zusätzliche Bedingung für INNER JOIN

  Alt 15. Jan 2008, 14:50
SQL-Code:
...
FROM
    dbo.sBer_PersPlanUebersicht INNER JOIN dbo.tPersonal_Aenderungen ON
        dbo.sBer_PersPlanUebersicht.Pk_tPersonal_fest = dbo.tPersonal_Aenderungen.FK_tPersonal_fest and
        dbo.tPersonal_Aenderungen.Aenderungsdatum_Beginn > now() and
        dbo.tPersonal_Aenderungen.Aenderungsdatum__Ende > now()
...
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz