Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Abfrage über 5 tables mit Berechnungen (https://www.delphipraxis.net/53858-sql-abfrage-ueber-5-tables-mit-berechnungen.html)

Emilio 23. Sep 2005 22:35

Datenbank: DBISAM • Version: 4.17 • Zugriff über: DBISAM

SQL-Abfrage über 5 tables mit Berechnungen
 
Hi allerseits,

es ist schon eine Ewigkeit her, dass ich über Abfragen Berechungen angestellt habe und ich komme einfach nicht mehr dahinter, wie das anzustellen ist.

Die query sieht bisher so aus (sql-String):
SQL-Code:
SELECT
artgrpid, artgrp, artid, artname, ek, lvp, info, groupsortnr, artstat, agruppe, aklasse, abereich
FROM
art, pli, artcls, artber,artgrup, plist
WHERE
art.artid = pli.artid  
AND
plist.statid = pli.status
AND
art.artklass = artcls.artclsid
AND
art.artber= artber.artberid
AND
art.artgrp = artgrup.artgrpid
ORDER BY
artgrup.artgrpid, pli.groupsortnr
funzt so auch prima in Zusammenspiel mit einer DBLookupCombobox. Aber nun kömmt's:

die Daten der query sollen nicht in einem Grid, sondern über DBLabels dargestellt werden.
Ich bräuchte da ein Feld, welches einen berechneten Wert (einen Aufschlag auf den Wert [ek])anzeigt. Der Aufschlag ergibt sich aus einem Aufschlagssatz, welcher in einer anderen table steht und 'gelookuped' werden soll. Mit persistenten Feldern in tables is nich - DBISAM halt. Kann das über eine Ergänzung des o. sql-statements realisiert werden?

Freue mich auf Anregungen - kann durchaus sein, dass ich mal wieder den Wald vor Bäumen nicht seh!

VG Emilio

[edit=Luckie]Luckie[/edit]

jensw_2000 24. Sep 2005 02:37

Re: SQL-Abfrage über 5 tables mit Berechnungen
 
Du könntest du es mal so versuchen

SQL-Code:
SELECT
artgrpid, artgrp, artid, artname, ek , ((SELECT Aufschlag FROM TabelleXYZ WHERE [artKlasse] = aKlasse) * EK) AS [EK2], lvp, info, groupsortnr, artstat, agruppe, aklasse, abereich
FROM
art, pli, artcls, artber,artgrup, plist
WHERE
art.artid = pli.artid  
AND
plist.statid = pli.status
AND
art.artklass = artcls.artclsid
AND
art.artber= artber.artberid
AND
art.artgrp = artgrup.artgrpid
ORDER BY
artgrup.artgrpid, pli.groupsortnr


:hi:

marabu 24. Sep 2005 06:08

Re: SQL-Abfrage über 5 tables mit Berechnungen
 
Hi Emilio,

wenn du eine triviale lookup table hast, dann funktioniert neben dem subselect von Jens auch der equi-join. Hast du lookup ranges in der Tabelle mit den Aufschlägen, dann kannst du einen theta-join auch über ein subselect mit dem case operator realisieren. Du hast vergessen, die relavanten Angaben zur lookup table und zur Nachschlagefunktion zu machen, deshalb von mir kein Code. Zum case operator schau einfach mal ins Handbuch - Abschnitt Operatoren.

Grüße vom marabu

Emilio 25. Sep 2005 12:02

Re: SQL-Abfrage über 5 tables mit Berechnungen
 
@all,

Danke für Eure Tipps.
Leider bekam ich nur DBISAM-parsing errors.

:wall:

Nach nur 8 Stunden hab ich dann gemerkt, dass der einfachste Weg der weiterführende ist:

Den SELECT-Abschnitt um die Formel erweitern (Ohne runde Klammern - DBISAM checkt das nicht!), Im FROM-Abschnitt die benötigte Tabelle hinzufügen und im WHERE-Abschnitt die Bedingung/Verknüpfung definieren.

S'duut!

VG Emilio

:dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 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