AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu JOIN

Ein Thema von harfes · begonnen am 26. Jan 2017 · letzter Beitrag vom 27. Jan 2017
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Frage zu JOIN

  Alt 26. Jan 2017, 07:37
Ich nummeriere die Aliase nötigenfalls durch, wenn ich dieselbe Tabelle mehrfach hinzujoine (E1, E2, E3 usw.). Aber könnte man in Deinem Fall die Verknüpfungsbedingungen nicht einfach verodern?
left outer join EINHEITDB E on A.VERPEINHEIT=E.EID OR A.VERBRAUEINHEIT=E.EID OR A.LAGBESTEINHEIT=E.EID OR A.MINBESTEINHEIT=E.EID
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.903 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zu JOIN

  Alt 26. Jan 2017, 07:46
Die Frage ist, was willst Du mit dieser Abfrage erreichen?
Zu jedem Artikel so vorhanden die/den Lieferanten, die Warengruppe(n) ausgeben, soweit so klar.
Aber was soll bei den Einheiten passieren? Auf welche Einheit soll sich Dein E.Einheit beziehen?
Formuliere bitte einmal in Worten, was Du erreichen möchtest und was Dir gegeben ist. Dann läßt sich sicherlich eine mehr oder minder elegante Lösung finden.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
205 Beiträge
 
Delphi 12 Athens
 
#3

AW: Frage zu JOIN

  Alt 26. Jan 2017, 09:59
Zunächst mal danke für eure Ideen/Anregungen. Wie ich bereits geschrieben habe, ist ein jeweils anderer Alias möglich...aber aus meiner Sicht unschön - und wenn's mehr Einheiten-Felder werden, auch irgendwann mal unübersichtlich.

Um nochmal zu verdeutlichen, warum ich das so mache: in der ARTIKEL-Tabelle habe ich verschiedene Angaben (Anzahl im Lager, Mindestanzahl, Anzahl je Bestelleinheit, etc.), die jeweils mit einer Zahl in einem Feld und mit der zugehörigen Einheit (also Stück, Karton, Rolle, etc.) bzw der ID in einem anderen Feld aus der EINHEITEN-Tabelle (das ist dann der EID) hinterlegt werden. Um beim Anzeigen nicht die ID der Einheit sondern die Einheit im Klartext anzuzeigen, muss ich dass natürlich für jedes Feld auslesen und zuordnen.
Also: ja es geht mit verschiedenen Alias (so habe ich das aktuell auch gelöst), aber ich habe mich eben gefragt, ob es nicht eine elegantere/einfachere/bessere Lösung gibt?

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Frage zu JOIN

  Alt 26. Jan 2017, 10:25
Irgendwie wird aber dann doch nicht klar, wenn du die so ggf. ermittelte Einheit nur 1x anzeigst, zu welcher Menge aus den Artikel sie gehört (Lagermenge, Mindestanzahl usw).
Hinzu kommt, dass so ein Artikel mehrfach angezeigt wird, wenn er in mehreren Spalten mit der Einheiten-Tabelle gejoined wird un in mehreren Spalten auch Einträge hat.

So bekäme man nur 1 Datensatz pro Artikel
SQL.Add('select A.*,E1.EINHEIT as Verpackungseinheit,E2.Einheit as Verbrauchseinheit,');//...
SQL.Add('W.WARENGRUPPE,L.FIRMA,L.KREDITORENNR');
SQL.Add('from ARTIKEL A ');
SQL.Add('left outer join EINHEITDB E on A.VERPEINHEIT=E.EID ');
SQL.Add('left outer join EINHEITDB E on A.VERBRAUEINHEIT=E.EID ');
Ralph
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Frage zu JOIN

  Alt 26. Jan 2017, 11:04
Irgendwie wird aber dann doch nicht klar, wenn du die so ggf. ermittelte Einheit nur 1x anzeigst
Genau, daher meine Frage zum Sinn/Verständnis dieses Falles.

Und nochmal, solange mehrfach auf die Einheit referenziert wird, gibt es keine andere Möglichkeit. Zumindest nicht in dieser Darstellungsform. Erst wenn man die Artikel Attribute (alle Einheitsangaben und sonstige) transformiert und in Listenform ausgibt, könnte man mit einem Join verschiedene Einheiten reinjoinen.

Die Transformation der Artikelattribute ist aber dann auch schon ein großer Anlauf. Das wäre ggF. sinnvoll, wenn man es -jenachdem - mit sehr unterschiedlichen Artikeln zu tun hat und deren Attribute standardmäßig als separate Tabelle modelliert.
Ich glaube in diversen Webshops wird das gern mal so gemacht.
Das hat aber wieder eine Gegenindikation, bei der Suche nach Artikeln über verschiedene Attribute.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Frage zu JOIN

  Alt 26. Jan 2017, 11:49
ich lehn mich mal weit aus dem Fenster:
SQL-Code:
select A.*,E.EINHEIT,W.WARENGRUPPE,L.FIRMA,L.KREDITORENNR
from ARTIKEL A
  left outer join EINHEITDB E on A.VERPEINHEIT=E.EID
  left outer join EINHEITDB E on A.VERBRAUEINHEIT=E.EID
  left outer join EINHEITDB E on A.LAGBESTEINHEIT=E.EID
  left outer join EINHEITDB E on A.MINBESTEINHEIT=E.EID
  left outer join WARENGRUPPEDB W on A.WARENGRUPPE=W.WID
  left outer join LIEFERANT L on A.LIEFERANT1=L.LID
das soll bedeuten, gib die gerade aktuelle Mengeneinheit aus (bei Ballen ist Stk null usw.)
Richtig geraten?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Frage zu JOIN

  Alt 26. Jan 2017, 13:45
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...
Gruß, Jo
  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 21:51 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