Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.531 Beiträge
 
Delphi 7 Professional
 
#2

AW: SQL Query um ein Feld erweitern (inner join)

  Alt Gestern, 20:22
Bitte beschreibe mal etwas genauer, was Du vorhast.

Wenn ich das zur Zeit richtig interpretiere, möchtest Du aus der Tabelle ArtLief alle Sätze, zu denen es kein Gegenstück in der externen Tabelle ekpreise gibt (AND extern.Artikelnummer IS NULL). Damit dürfte jede Berechnung mit extern.brutto und extern.netto scheitern.

Bitte ersetze das beim SELECT * den * durch die tatsächlich benötigten Spalten der externen Tabelle. Die macht das Verstehen der externen Daten für externe Helfer einfacher

SQL-Code:
    IIF(ArtLief.ArtLiefEKPreis = 0, 0, extern.nettopreis - ArtLief.ArtLiefEKPreis) AS DiffEUR,
    IIF(DiffEUR = 0, 0, DiffEUR * 100 / ArtLief.ArtLiefEKPreis) AS prozent,
Funktioniert das? Auf eine mit AS benannte Spalte dann später zugreifen?

Zeig' bitte mal Deine Versuche, in denen Du versucht hast die Tabelle sArtikel einzubinden. Hast Du "einfach nur" kein Ergebnis erhalten oder eine oder mehrere Fehlermeldungen? Wenn Fehlermeldungen, welche?

Momentan sehe ich keinen ernsthaften Grund, warum es nicht funktionieren sollte, außer, dass ich mit der korrekten Syntax vom Access-SQL absolut nicht vertraut bin.

Ein Versuch:
SQL-Code:
SELECT
    ArtLief.ArtLiefArtnr,
    ArtLief.ArtLiefBestellNr,
    ArtLief.ArtLiefEKPreis,
    ArtLief.ArtEKDatum,
    sArtikel.ArtZusInfo4,
    -- das Folgende erscheint mir (wegen extern.Artikelnummer IS NULL) sinnfrei, da die Werte immer = Null sind
    extern.brutto,
    extern.nettopreis,
    IIF(ArtLief.ArtLiefEKPreis = 0, 0, extern.nettopreis - ArtLief.ArtLiefEKPreis) AS DiffEUR,
    IIF(extern.brutto = 0, 0, (extern.brutto - extern.nettopreis) * 100 / extern.brutto) AS Rabatt,
    IIF(DiffEUR = 0, 0, DiffEUR * 100 / ArtLief.ArtLiefEKPreis) AS prozent -- hier bin ich fast sicher, dass das nicht geht
FROM
(
    ArtLief
    LEFT JOIN
    ( SELECT
          Artikelnummer,
          Brutto,
          Netto
        FROM ekpreise
        IN 'E:\Preisdateien\K000217_p.mdb'
    ) AS extern ON ArtLief.ArtLiefBestellNr = extern.Artikelnummer
)
INNER JOIN sArtikel ON ArtLief.ArtLiefArtNr = sArtikel.ArtNr
WHERE
    ArtLief.ArtLiefLiefNr = 'K000217'
    AND extern.Artikelnummer IS NULL
  Mit Zitat antworten Zitat