mysql-tabellen verbinden

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
howie1
Mitglied
Beiträge: 3
Registriert: 03.11.2006 22:54

mysql-tabellen verbinden

Beitrag von howie1 »

hi,

ich hoffe, ich formuliere das problem so eindeutig, daß ihr nachvollziehn könnt, was ich meine.

also, ich habe eine tabelle mit einer adressliste (anrede, name, vorname, firma). in dieser liste werden sämtliche adressdaten gespeichert.

in einer zweiten tabelle (kunden) werden kunden mit weiteren informationen (status, erstkontakt...) gespeichert. in einem feld (aid) wird direkt auf die entsprechende zeile in der adressliste verwiesen.

in einer dritten tabelle (firmen) werden verschieden firmen verwaltet, die bezug zu verschiedenen kunden haben. auch hier wird in einem feld (aid) direkt auf die entsprechende zeile in der adressliste verwiesen.

zwischen den tabellen firmen und kunden bestehen n:n-beziehungen. d.h. jeder kunde kann zu mehreren firmen gehören und jede firma kann verschiedene kunden haben.

ziel ist es aus der tabelle adressen auszuwählen, welche kunden zu welchen firmen gehören und dies in einer zeile auszugeben.

sowohl von kunden, als auch von firmen soll aus tabelle adressen name, vorname, anrede, firma ausgegeben werden.

hat jemand einen tipp, mit welcher funktion das gehen könnte (join, union) und das kurz beschreiben?

danke schon mal...

gruss howie
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ist diese Struktur fest?
Bei einer n:n Beziehung würde das nämlich bedeuten, dass in einer der Tabellen Daten mehrfach vorkommen, also hier in der 3. Tabelle würden Firmen für jeden Kunden angelegt.

Ein meiner Meinung nach besseres Tabellenlayout wäre es, wenn Kundendaten in einer, meinetwegen auch in 2 Tabellen liegen, die Firmendaten in einer anderen und eine Letzte dann für die Beziehungen. Dadurch würde nicht ein derart großer Datenoverhead generiert.

Was die Frage angeht:

Code: Alles auswählen

SELECT k.name, f.name FROM kunde k , firma f WHERE k.id = f.kunden_id
Auf diese Weise sollten sich - sofern ich deine Frage/Beschreibung korrekt verstanden habe - die Daten aus der Datenbank holen lassen. Die Kunden befinden sich in der Tabelle kunde, die Firmen in firma und nach deiner Beschreibung wird in der firma tabelle jeder Eintrag einem Kunden zugeordnet. Allerdings werden pro Kunde mehrere Einträge zurückgeliefert, da ja nicht feststeht wie viele Firmenkontakte ein Kunde hat. Wie man das in eine Zeile zusammenführen soll habe ich derzeit keine Idee. GROUP BY würde alle Firmen bis auf eine unter den Tisch fallen lassen und alle anderen Dinge die mir einfallen geben weiterhin mehrere Zeilen aus.

Es sei denn das darf mit anderen Dingen als SQL realisiert werden...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: mysql-tabellen verbinden

Beitrag von Miriam »

howie1 hat geschrieben:in einem feld (aid) wird direkt auf die entsprechende zeile in der adressliste verwiesen
??? Kannst Du darauf bitte näher eingehen? :o
Wenn es so ist, wie Du es schreibst, hast Du leider verloren, denn es kann kein Zusammenhang zwischen der Adressliste und den anderen Tabellen hergestellt werden.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“