Seite 1 von 1

mysql-tabellen verbinden

Verfasst: 10.12.2006 21:18
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

Verfasst: 11.12.2006 00:07
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...

Re: mysql-tabellen verbinden

Verfasst: 11.12.2006 12:10
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.