AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken InterBase Group By / Left Join / 3xgleiche Tabelle??

InterBase Group By / Left Join / 3xgleiche Tabelle??

Ein Thema von Agasch · begonnen am 13. Apr 2014 · letzter Beitrag vom 28. Apr 2014
Antwort Antwort
Agasch

Registriert seit: 13. Apr 2014
8 Beiträge
 
#1

AW: InterBase Group By / Left Join / 3xgleiche Tabelle??

  Alt 13. Apr 2014, 11:29
auch falsch^^

Richtig wäre:
PERSONAL_ID=1 URLAUB=17 FEHLTAGE=1 KRANK=7

Bekomme jedoch:
PERSONAL_ID=1 URLAUB=34 FEHLTAGE=4 KRANK=14
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: InterBase Group By / Left Join / 3xgleiche Tabelle??

  Alt 13. Apr 2014, 11:32
Ja logisch. Es hat sich seit meiner Aussage ja auch nichts Wesentliches an der Abfrage verändert. Es bleibt bei 4 Zeilen über die der GROUP BY läuft.

Versuch doch mal die Tabelle mit den Fehltagen nur einmal zu joinen und für die Urlaubstage (als Beispiel) summierst dur nur, wenn die Art = U ist.

In SQL SUM( IF( ... ) ) .

Der Rest erfolgt analog dazu ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Apr 2014 um 11:40 Uhr)
  Mit Zitat antworten Zitat
Agasch

Registriert seit: 13. Apr 2014
8 Beiträge
 
#3

AW: InterBase Group By / Left Join / 3xgleiche Tabelle??

  Alt 13. Apr 2014, 12:08
Das ist es... warum einfach wenns kompliziert geht^^

Also das funktioniert (IF gibs in Interbase nicht, aber case):
Der Server zeigt es richtig an. Werde schauen, wie weit ich es noch verfeinern kann (zB wenn FEHLTAGE_ARBEITSTAGE= NULL sind, event. 2 case):

select
Sum(case when FEHLTAGE_ART='U' then FEHLTAGE_ARBEITSTAGE else 0 end) as URLAUB_GENOMMEN,
Sum(case when FEHLTAGE_ART='K' then FEHLTAGE_ARBEITSTAGE else 0 end) as KRANK,
Sum(case when FEHLTAGE_ART='F' then FEHLTAGE_ARBEITSTAGE else 0 end) as FEHLTAGE,
PERSONAL_ID

from PERSONAL P
LEFT JOIN FEHLTAGE ON (FEHLTAGE_PERSONALID=PERSONAL_ID)

GROUP BY PERSONAL_ID
  Mit Zitat antworten Zitat
Antwort Antwort

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 11:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz