![]() |
Datenbank: DBISAM • Version: 4.21 • Zugriff über: Native
SQL-statement - Logikproblem?
Liebe DP,
in einem table habe ich die MwSt-Sätze, die es so gibt und geben wird hinterlegt. Dabei ist [MwStID] = index und [MwStSatz] der eigentliche Wert. Nun sollte ich in der Artikelstammdaten-Ansicht die MwSt für Deutschland [MwSt1] und die für das Ausland [MwSt2] anzeigen. [MwSt1] ist kein Problem, aber Ihr Zahnfleisch ... So sieht das bisherige SQL-Statement aus:
Delphi-Quellcode:
OK, die verwendeten Namen sind nicht auf Anhieb einleuchtend - sorry for that!
SELECT
ARTID MID, EK, LVP, max(DSNR) MUPDATE into memory\temp FROM PLI GROUP BY ARTID; SELECT ARTID, EK, LVP, AUSA, PSatz, Bemerkung, GroupSortNr, ArtName, Artikelgruppe, KF, Artikelklasse, Artikelbereich, ProvArt, ARTStat, EK+AUSA*EK/100 AS [BP], LVP-EK AS[MARGE], (LVP-EK)/LVP *100 AS [MARGE%], (LVP-(EK+AUSA*EK/100))*PSatz/100 AS [ProvLVP], MwStSatz, (LVP+(LVP*MwStSatz/100)) AS BruttoLVP , DSNR FROM PLI JOIN ART on PLI.ARTID = ART.ARTID JOIN ARTGRUP on ARTGRPID = ART.ARTGRP JOIN PLIST ON PLI.Status = PLIST.STATID JOIN ASA ON ASAID = ART.ASA JOIN PSA ON PSID= ART.PS JOIN ARTCLS ON ARTClassID = ART.ARTClass JOIN ARTBER ON ARTBERID = ART.ARTBER JOIN PART ON PARTID = ART.PART JOIN MWST ON MwStID= ART.MwSt1 JOIN memory\temp on ARTID = MID and DSNR = MUPDATE ORDER BY Artikelgruppe, GroupSortNr; Meine Frage(n): wie bekomme ich [MwSt2] in dieses Statement rein? - bisher hagelts nur DBISAM engine errors. Ist der Aufbau ungeeignet, wenn aus einem "Nachschlage-table" Feldwerte aus einer Column mehrfach benötigt werden? Freue mich auf Eure Antworten VG Emilio |
Re: SQL-statement - Logikproblem?
Kenne den DBISAM Dialekt nicht genau, aber theoretisch sollte es so gehen:
SQL-Code:
Wie gesagt Syntax ist geraten ;) Aber wenn du die gleiche Tabelle mehrmals joinen willst, musst du mit Aliasnamen arbeiten und die Felder entsprechend mit Tabellenalias.Feldname ansprechen.
JOIN
MWST AS MWST_DE ON MWST_DE.MwStID = ART.MwSt1 JOIN MWST AS MWST_AUSLAND ON MWST_AUSLAND.MwStID = Art.MwSt2 |
Re: SQL-statement - Logikproblem?
Hi mquadrat,
Danke für Deinen Tipp. Haut aber leider nicht hin; bekomme in der query bei [MwSt1] das gleiche wie bei [MwSt2], also in beiden Spalten 0 oder 16 oder aber Fehlermeldungen. :gruebel: VG Emilio |
Re: SQL-statement - Logikproblem?
Ich habe mir das Statement nicht im Detail angeschaut, aber grundsätzlich kannst du mit Subselects arbeiten, sowas wie das hier:
SQL-Code:
Aber einige Dialekte sind zu blöd dazu, obwohl es SQL-Standard ist.
Select ArtikelNr,
Preis, (select Steuersatz from Steuern where stID = Artikel.stID) as Mwst from Artikel Das gleiche liefert:
SQL-Code:
Wichtig ist das LEFT join, sonst werden nur die Artikel mit gültigem Verweis in die Steuersatztabelle aufgelistet.
Select ArtikelNr,
Preis, Steuersatz as MWst from Artikel left join Steuersatz on Steuersatz.stID = Artikel.stID |
Re: SQL-statement - Logikproblem?
Hi @all,
der Vorschlag von mquadrat ist doch der Beste und dazu der Richtige. :thumb: Nachdem ich mich vergewissern konnte, dass DBISAM self joins beherrscht, habe ichs erstmal im "Kleinen" versucht - und siehe da: es duut! Das Wichtigste habe ich beim ersten Versuch versäumt: Zitat:
:duck: Vielen herzlichen Dank für Deine/Eure Hilfe. VG Emilio |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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