AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Query um ein Feld erweitern (inner join)
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Query um ein Feld erweitern (inner join)

Ein Thema von HCB · begonnen am 3. Feb 2025 · letzter Beitrag vom 4. Feb 2025
 
HCB

Registriert seit: 12. Feb 2020
225 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 4. Feb 2025, 16:36
Danke Delphi.Narium für Deine Unterstützung. Du erweist dich jetzt schon als meine letzte Rettung

Ich habe eine externe Preisliste vom Lieferant z.B. K000217 auf USB-Stick E:\Preisdateien\K000217_p.mdb. Da sind die Artikelnummer, Brutto, Rabatt und Nettopreis mit dem glecinamigen Feldern hinterlegt.

Jetzt sollen die Preise eingelesen werden. Das läuft.
Nun will ich mit button1 sehen, welche Preise erhöht wurden. Ok läuft.
Button2 zeigt mir welche Preise gleich geblieben sind, also nicht erhäht wurden. ok, läuft.
Button3 zeigt mir welche Artikelpreise günstiger geworden sind, Ok läuft auch.

Jetzt brauche ich eine Abfrage, welche Artikel vom Lieferant z.B. K000217 nicht mehr in der externen Preisliste E:\Preisdateien\K000217_p.mdb vorkommen, weil der Lieferant diesen Artikel nicht mehr führt. Also in der externen Tabelle ekPreise nicht mehr existiert. Diese sollen mir angezeigt werden.

Mit der Query werden die auch korrekt angezeigt. Das Problem besteht aber darin, dass ich aus der Tabelle sArtikel die Preise holen muss um diese nachher zu aktualisieren. Ich brauche also alle Felder die auch in dieser Query (die läuft) vorhanden sind:
Delphi-Quellcode:
SELECT
ArtName1,
ArtVKPreis_0,
ArtVKPreis_1,
ArtZusInfo4,
ArtLiefLiefNr,
ArtLiefArtNr,
ArtcDate,
ArtLiefBestellNr,
ArtLiefEKPreis,
extern.brutto,
extern.nettopreis,
ArtEKDatum,
IIF([ArtLiefEKPreis] = 0,0, (extern.nettopreis - ArtLiefEKPreis)) as DiffEUR,
IIF([extern.brutto]= 0,0,(extern.brutto-extern.nettopreis)*100/extern.brutto) as Rabatt,
IIF([DIFFEur] = 0,0,DiffEUR*100/(ArtLiefEKPreis)) as prozent
FROM (ArtLief INNER JOIN (SELECT * FROM ekpreise IN 'E:\Preisdateien\K000217_p.mdb') extern
ON ArtLief.ArtLiefBestellnr=extern.Artikelnummer)
INNER JOIN sArtikel ON ArtLief.ArtLiefArtNr = sArtikel.ArtNr
where ArtLief.ArtLiefLiefNr = 'K000217' order by ArtLiefArtNr;
Es müssen also die Felder aus der Tabelle sArtikel - ArtName1, ArtVKPreis_0, ArtVKPreis_1 und ArtZusInfo4 in die Abfrage eingebaut werden:

Delphi-Quellcode:
SELECT ArtLief.ArtLiefArtnr, ArtLief.ArtLiefBestellNr, ArtLief.ArtLiefEKPreis,
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,
ArtLief.ArtEKDatum
FROM ArtLief
LEFT JOIN (
    SELECT *
    FROM ekpreise
    IN 'E:\Preisdateien\K000217_p.mdb'
) AS extern ON ArtLief.ArtLiefBestellNr = extern.Artikelnummer
WHERE ArtLief.ArtLiefLiefNr = 'K000217'  and extern.Artikelnummer IS NULL;
Genauer kann ich es leider nicht darstellen.

Meine Query läuft leider nicht und bringt folgende Fehlermeldung obwohl die Zuweisungen korrekt sind:

Syntaxfehler (fehlender Operator) in Abfrageausdruck 'ArtLief.ArtLiefBestellNr = extern.Artikelnummer
LEFT JOIN sArtikel ON ArtLief.ArtLiefArtnr = sArtikel.ArtNr'


Delphi-Quellcode:
SELECT ArtLief.ArtLiefArtnr, ArtLief.ArtLiefBestellNr, ArtLief.ArtLiefEKPreis,
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,
ArtLief.ArtEKDatum,
sArtikel.ArtName1, sArtikel.ArtVKPreis_0, sArtikel.ArtVKPreis_1, sArtikel.ArtZusInfo4
FROM ArtLief
LEFT JOIN (
    SELECT *
    FROM ekpreise
    IN 'E:\Preisdateien\K000217_p.mdb'
) AS extern ON ArtLief.ArtLiefBestellNr = extern.Artikelnummer
LEFT JOIN sArtikel ON ArtLief.ArtLiefArtnr = sArtikel.ArtNr
WHERE ArtLief.ArtLiefLiefNr = 'K000217AND extern.Artikelnummer IS NULL;
Ich weiß nicht, wo der Fehler liegt. Kannst du nochmals versuchen mir zu helfen?
Dein Vorschlag funktioniert leider nicht.

LG Harry
  Mit Zitat antworten Zitat
 


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 18:08 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