Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Frage zu JOIN (https://www.delphipraxis.net/191540-frage-zu-join.html)

jobo 26. Jan 2017 13:45

AW: Frage zu JOIN
 
Zitat:

Zitat von p80286 (Beitrag 1360028)
das soll bedeuten, gib die gerade aktuelle Mengeneinheit aus (bei Ballen ist Stk null usw.)
Richtig geraten?

Ich glaube nicht.
Die aufgeführten Einheiten sind alle unterschiedlicher Art, also meinetwegen Minbesteinheit = Paletten.
Bedeutet man kann nur palletenweise bestellen.
Lagerbesteinheit = Stück

usw...

p80286 26. Jan 2017 14:51

AW: Frage zu JOIN
 
war ein Vorschlag, jetzt sollte sich vllt. der TE äußern.
(ich hatte heute eine Recherchenanfrage von zwei Stellen beide haben laut genickt bei der schriftlichen Formulierung. Dann hab ich nachgefragt ob denn auch das gemeint sei, A:Ja B:Nein :twisted:)

Gruß
K-H

harfes 27. Jan 2017 07:42

AW: Frage zu JOIN
 
Ja, jedes Feld, zu der eine Einheit gehört, kann eine andere Einheit haben (Verpackungseinheit=1 Karton, Verbrauchseinheit=1 Stück, etc.) - daher muss ich die Einheit immer wieder abfragen. Meine (unelegante, aber funktionierende) Lösung:
Delphi-Quellcode:
with DM1.DataModule1.IBCArtQuery do
    begin
        Close;
        SQL.Clear;
        SQL.Add('select A.*,E.EINHEIT as EE,F.EINHEIT as EF,G.EINHEIT as EG,H.EINHEIT as EH,W.WARENGRUPPE as WG,L.FIRMA,L.KREDITORENNR,Z.BEZEICHNUNG as LP ');
        SQL.Add('from ARTIKEL A ');
        SQL.Add('left outer join EINHEITDB E on A.VERPEINHEIT=E.EID ');
        SQL.Add('left outer join EINHEITDB F on A.VERBRAUEINHEIT=F.EID ');
        SQL.Add('left outer join EINHEITDB G on A.LAGBESTEINHEIT=G.EID ');
        SQL.Add('left outer join EINHEITDB H on A.MINBESTEINHEIT=H.EID ');
        SQL.Add('left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID ');
        SQL.Add('left outer join LIEFERANT L on A.LIEFERANT1=L.LID ');
        SQL.Add('left outer join LAGERPLATZ Z on A.LAGERPLATZID=Z.LPID ');
        ExecSQL;
    end;
Nochmal: mir ging es darum, eine elegantere Abfrage zu generieren...aber offensichtlich muss das wohl so gehen (und tut es ja auch!). Danke für euren Input!!!

Hartmut

p80286 27. Jan 2017 19:04

AW: Frage zu JOIN
 
Wie wäre es denn hiermit:
SQL-Code:
select A.*,E.EINHEIT,W.WARENGRUPPE as WG,L.FIRMA,L.KREDITORENNR,Z.BEZEICHNUNG as LP
from ARTIKEL A
     left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID
     left outer join LIEFERANT L on A.LIEFERANT1=L.LID
     left outer join LAGERPLATZ Z on A.LAGERPLATZID=Z.LPID
     left outer join EINHEITDB E on A.VERPEINHEIT=E.EID
union
select A.*,F.EINHEIT ,W.WARENGRUPPE as WG,L.FIRMA,L.KREDITORENNR,Z.BEZEICHNUNG as LP
from ARTIKEL A
     left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID
     left outer join LIEFERANT L on A.LIEFERANT1=L.LID
     left outer join LAGERPLATZ Z on A.LAGERPLATZID=Z.LPID
     left outer join EINHEITDB F on A.VERBRAUEINHEIT=F.EID
union
select A.*,G.EINHEIT,W.WARENGRUPPE as WG,L.FIRMA,L.KREDITORENNR,Z.BEZEICHNUNG as LP
from ARTIKEL A
     left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID
     left outer join LIEFERANT L on A.LIEFERANT1=L.LID
     left outer join LAGERPLATZ Z on A.LAGERPLATZID=Z.LPID
     left outer join EINHEITDB G on A.LAGBESTEINHEIT=G.EID
union
select A.*,H.EINHEIT,W.WARENGRUPPE as WG,L.FIRMA,L.KREDITORENNR,Z.BEZEICHNUNG as LP
from ARTIKEL A
     left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID
     left outer join LIEFERANT L on A.LIEFERANT1=L.LID
     left outer join LAGERPLATZ Z on A.LAGERPLATZID=Z.LPID
     left outer join EINHEITDB H on A.MINBESTEINHEIT=H.EID
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz