![]() |
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:
funzt so auch prima in Zusammenspiel mit einer DBLookupCombobox. Aber nun kömmt's:
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 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] |
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: |
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 |
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 10:26 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 by Thomas Breitkreuz