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 3. Feb 2025
Antwort Antwort
HCB

Registriert seit: 12. Feb 2020
202 Beiträge
 
Delphi 12 Athens
 
#1

SQL Query um ein Feld erweitern (inner join)

  Alt Gestern, 19:24
Datenbank: Access mdb • Version: 2003 • Zugriff über: SQL / Delphi FireDac
An die Datenbankprofis hier im Forum, mit der Bitte um Hilfe.
Folgende Abfrage funktioniert, aber ich brauche noch ein Feld ArtZusInfo4 aus einer anderen Tabelle sArtikel verknüpft mit ArtNr = ArtLiefArtNr:

SQL-Code:
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;
Mir gelingt es nicht mit inner join die tabelle sArtikel einzubinden und das Feld ArtZusInfo4 zuzufügen.
Vielleicht könnte hier mal ein Profi darüber schauen, wo und wie man das noch einbinden könnte.

Für Eure Hilfe jetzt schon Vielen Dank.

LG Harry

Geändert von TBx (Gestern um 19:33 Uhr) Grund: Delphi-Tags in SQL-Tags gewandelt
  Mit Zitat antworten Zitat
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
Antwort Antwort


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 02:52 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