AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

Ein Thema von erich.wanker · begonnen am 21. Dez 2015 · letzter Beitrag vom 21. Dez 2015
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
453 Beiträge
 
Delphi XE4 Professional
 
#1

Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 14:09
Datenbank: Firebird • Version: 2.5 • Zugriff über: Zeos Lib 7
Hallo ..
Ich versuche schon ne geraume Zeit ein SQl-Statement zusammenzubasteln .. leider ergebnislos

GEGEBEN:

Tabelle1 : OVERVIEW
Code:
ID |  Eintragsname |  ID_Kunde | ID_LEISTUNG | TABELLENNAME ........

Tabelle2 : ENTSCHAEDIGUNG
Code:
ID |  Eintragsname | BRUTTO | NETTO |  EINHEIT |  MWST |  WAEHRUNG | ANZAHL .....
Tabelle3 : FREIKARTEN
Code:
ID |  Eintragsname | BRUTTO | NETTO |  EINHEIT |  MWST |  WAEHRUNG | ANZAHL ....
Tabelle4 : UMSATZBETEILIGUNG
Code:
ID |  Eintragsname | BRUTTO | NETTO |  EINHEIT |  MWST |  WAEHRUNG | ANZAHL ...

Wenn Ich nun die OVERVIEW anhand ID-KUNDE = 10 filtere - sehe ich:


1 Entschädigung 1 10 100 ENTSCHAEDIGUNG
2 Entschädigung 2 10 101 ENTSCHAEDIGUNG
3 Eine Freikarte 10 201 FREIKARTEN
4 Eine Beteiligung 10 208 UMSATZBETEILIGUNG

FRAGE
jetzt hätte ich aber gerne in der OVERVIEW die Spalte "Brutto" noch gerne dabei ..
ABER Brutto ist ja in einer der 3 Leistungsdatenbänke ..

Ich hab in der Overview den Tabellennamen der betreffenden Leistung abgespeichert .. kann ich mit dem was anfangen??



Vielen Dank für Hinweise
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 14:16
Ich verstehe zwar zum größten Teil nur Bahnhof, aber so auf den ersten Blick scheint Deine DB nicht "ordentlich" (d.h. mindestens 3.NF) normalisiert zu sein. Kannst Du evtl. etwas an der Struktur ändern, oder ist die fix vorgegeben?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 14:17
Kannst du die Leistungs-Tabellen ändern?

So wie es aussieht, haben die 3 Tabellen denselben Aufbau. Dann solltest du diese drei Tabelle zusammenfassen und eine neue Spalte "Leistungstyp" dazupacken. Dann kannst du in der Overviewtabelle auch den Leistungstyp benutzen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.288 Beiträge
 
Delphi 12 Athens
 
#4

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 14:20
Hallöle...

Ich finde du machst es dir zu schwer. Die 3 Tabellen kann man in einer Tabelle mit einem zusätzlichen Feld das den Typ "deklariert" verwalten. Ich benutze gern einen Integer als ID für so etwas, welche man dann über Enumerations im Programm abbilden kann.
Dann hättest du in deiner Overview Tabelle nur die Leistung ID und ein einfacher JOIN auf die "Leistungstabelle" reicht.

Doppelt gemoppelt ist immer wieder gut... Ich hab am meisten Text... deswegen war ich zu langsam.

Geändert von haentschman (21. Dez 2015 um 14:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
453 Beiträge
 
Delphi XE4 Professional
 
#5

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 14:55
Hallo DeddyH & MrSpock ..

Leider kann ich die Struktur nicht ändern ...


Hallo haentschman ..

Die 3 verschiedenen Leistungstabellen sind schon gegeben ..

in der "ENTSCHAEDIGUNG" sind zusätzlich viele Felder betreffend "Konsumentenpreis-Indexanpassung"
in der "UMSATZBETEILIGUNG" sind zusätzlich viele Feldber betreffend Zeiträume, Minimalbeträge, Umsatz% .
in der "FREIKARTEN" sind zusätzlich viele Kartendaten .. berechtigte Personen ect ..

Was alle 3 "Leistungstabellen" gemeinsam haben sind: Brutto, Netto, MWst .. und diese Werte sollte ich in der "OVERVIEW" darstellen ..



ich hoffe ja immer noch dass eine sql-Abfrage mit tabellenname als variable ?? möglich ist ..
oder eine IIF mit fixen tabellennamen ?? ..

ThanX
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 15:04
Ich hab in der Overview den Tabellennamen der betreffenden Leistung abgespeichert .. kann ich mit dem was anfangen??
Also, die Vorredner haben alle recht. Auch ich würde mit diesem DB - Design nicht weitermachen.
Falls du es aber aus irgendeinem Grunde musst - dann kannst du die Spalte Brutto mit CASE etwa so formulieren:

Code:
case
  when tabellenname = 'ENTSCHAEDIGUNG' then (select brutto from entschaedigung where id = leistung_id)
  when tabellenname = 'UMSATZBETEILIGUNG' then (select brutto from umsatzbeteiligung where id = leistung_id)
  when tabellenname = 'FREIKARTEN' then (select brutto from freikarten where id = leistung_id)
end brutto
sofern ich das Feld LEISTUNG_ID richtig interpretiert habe.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#7

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 15:16
Alternativ (ungetestet!):
Code:
select
  x.*,
  y.brutto
from
  OVERVIEW x
  left join (
    select 'ENTSCHAEDIGUNG' as Tabellenname, ID, BRUTTO from entschaedigung
    union
    select 'FREIKARTEN' as Tabellenname, ID, BRUTTO from freikarten
    union
    select 'UMSATZBETEILIGUNG' as Tabellenname, ID, BRUTTO from umsatzbbeteiligung
    ) y
    on x.tabellenname = y.tabellenname and x.id_leistung = y.id
where
  x.ID = 10
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Feld "Brutto-Betrag" aus einer von 3 möglichen Tabellen anzeigen

  Alt 21. Dez 2015, 16:28
ich hoffe ja immer noch dass eine sql-Abfrage mit tabellenname als variable ?? möglich ist ..
oder eine IIF mit fixen tabellennamen ?? ..
Die Hoffnung stirbt zuletzt!
Ich befürchte für den ersten Teil muss man sehr alt werden, um es zu erleben.
Der 2.Teil wurde ja schon gelöst, hier noch eine Variante, mix aus 1. und 2. Vorschlag. Dabei geht es nur um Performance, nimm was am schnellsten läuft (und natürlichem "richtigsten").

Ansonsten möchte ich wie die anderen vor mir dringend raten, dieses Datenmodell ordentlich zu überarbeiten. Mit dem aktuellen kommst Du auf Dauer in Teufelsküche.

Code:
-- ungetestet
select x.*,
       case
         when tabellenname = 'ENTSCHAEDIGUNG'   then e.brutto
         when tabellenname = 'UMSATZBETEILIGUNG' then u.brutto
         when tabellenname = 'FREIKARTEN'       then f.brutto
       end as brutto
  from OVERVIEW x
  left join (select ID, BRUTTO from entschaedigung) e
    on x.id = e.id
  left join (select ID, BRUTTO from freikarten) f
    on x.id = f.id
  left join (select ID, BRUTTO from umsatzbbeteiligung) u
    on x.id = u.id
/*where
  ... andere bedingungen..*/
Gruß, Jo
  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 20:29 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