AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Zugriff auf eine n:m Verknüpfung
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf eine n:m Verknüpfung

Ein Thema von Luckner · begonnen am 31. Mär 2022 · letzter Beitrag vom 1. Apr 2022
 
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

Zugriff auf eine n:m Verknüpfung

  Alt 31. Mär 2022, 14:01
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDataset
Hallo,
habe, möglicherweise, eine triviale Frage. in einer Datenbank habe ich ein 1. Kunden-Tabelle und 2. Lieferadressen-Tabelle. Die Kunden haben verschiedene Lieferadressen und es kommt vor, dass eine Lieferadresse mehreren Kunden zugerordnet werden muss. Habe deswegen eine 3. Tabelle mit ID, IDKUNDE, IDLIEFERADRESSEN erstellt. Wie macht man eine select-Abfrage, wenn man für einen Kunden die Lieferadressen filtern möchte. Mein Gedanke ist, dass über eine select-Anweisung mit where IDKUNDE = Zahl und in einer while-Schleife dann ein weiteres select mit where = entsprechende IDLIEFERADRESSEN. Aber ich kann mir jedoch vorstellen, dass es dafür eine schnellere Anweisung gibt. Möglicherweise irgendetwas mit JOIN.

Habe es folgendermassen versucht:

Delphi-Quellcode:
('SELECT * FROM KUNDENSTAMM ');
('JOIN KUNDENLIEFERADRESSEN ON ' + IntToStr(KundenID) + ' = KUNDENLIEFERADRESSEN.IDKUNDEN');
('JOIN ADRESSENSTAMM ON KUNDENLIEFERADRESSEN.IDADRESSEN = ADRESSENSTAMM.ID');
Es werden mit dem o.g. select-Aufruf die richtigen Lieferadressen für diesen Kunden angezeigt. Jedoch multipliziert mit der Anzahl der Kunden in der Kundentabelle. Also so: für Kunden Müller:
Berlin
Bremen
München
Köln
Berlin
Bremen
München
Köln
Berlin
Bremen
München
Köln

bei 3 Kunden in der Kundentabelle. Das Programm soll nur die Adressen des einen Kunden zeigen.
Was funktioniert, wenn ich aus der Verbindungstabelle über eine select-Anweisung mit einer Kundenentsprechenden_ID alle dazugehörigen Lieferadressen_ID's herausfiltere und dann mit einer While-Schleife und einer Select-Anweisung mit der aktl. Lieferadressen_ID die Daten aus der Lieferadressen-Tabelle heraussuche.

Danke, Luckner
  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 09:49 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