Zum Inhalt springen

Databankverknüpfung

Erstellt am 22. Juni 2007 · 4 Antworten · letzte Antwort am 26. Juni 2007

Tags: Frage

brokemeister ·

Hi!

Ich fange gerade an mir meine eigene Erweiterung zu schreiben. Leider habe ich nach langem Suchen nichts passendes gefunden.

Sinn ist es mehrere Vereine parallel mit einer Oberfläche verwalten zu können. Viele Mitglieder sind in mehreren Vereinen. Der Adressbestand überschneidet sich zu ca. 90%.

Folgende Tabellen möchte ich miteinander verknüpfen:

CONTACT: id,name,street,...
CLUB: id,name
CONTRIBUTION: id,CLUB_id,name,amount
MEMBER: id,CONTACT_id,CLUB_id,since,CONTRIBUTION_id

Die einfache Verknüpfung von Contact,Club mit Member ist kein Problem.
Nun möchte ich aber, dass der Beitrag (Contribution) nur aus den passenden Datensätzen gewählt wird, die bei Beitrag und Mitglied (Member) die gleiche CLUB_id haben...

Kann man dies mit Typo3 ohne weiteres lösen oder muss ich das Problem anders lösen?

NickD ·

SELECT * FROM CONTACT AS con inner join CLUB AS club,CONTRIBUTION AS cont,MEMBER AS mem WHERE mem.CLUB_id = cont.CLUB_id... !?!? ich denke das das nichts mit typo3 zutun hat, sondern mit mysql 😉

cope ·

Hallo zusammen,

SELECT * FROM CONTACT AS con inner join CLUB AS club,CONTRIBUTION AS cont,MEMBER AS mem WHERE mem.CLUB_id = cont.CLUB_id

3-faches kartesisches Produkt und anschliessend "where"? Je nach Größe platzt der Server...

Wäre es nicht besser die beiden joins per "on" Klausel gleich zu begrenzen?

select * from member as m join club on m.club_id=club.id
join contribution as cont on m.contribution_id=cont.id

Gruß
Cope

brokemeister ·

Die Abfrage so ist ja nicht das Problem.

Ich muss dass ganze ja dann auch ins Backend einpassen...
D.h.
Ich editiere gerade eine Datensatz aus Member dort ist der Club mit der ID 1 selektiert.
Jetzt sollten nur noch für die Contribution die entsprechenden Optionen aus Contribution mit Club-ID 1 zur Auswahl stehen.

NickD ·
cope schrieb

Hallo zusammen,

SELECT * FROM CONTACT AS con inner join CLUB AS club,CONTRIBUTION AS cont,MEMBER AS mem WHERE mem.CLUB_id = cont.CLUB_id

3-faches kartesisches Produkt und anschliessend "where"? Je nach Größe platzt der Server...

Wäre es nicht besser die beiden joins per "on" Klausel gleich zu begrenzen?

select * from member as m join club on m.club_id=club.id
join contribution as cont on m.contribution_id=cont.id

Gruß
Cope

das war auch nur ein lösungshinweis, also keine end-version 😉