Verknüpfung von zwei Tabellen

tluebke

Mitglied
So, nachdem ich mich durch viele Foreneinträge und Google gewühlt habe und immernoch nicht auf eine Lösung gekommen bin, muss ich nun ein eigenes Thema aufmachen. Ich kapier einfach nicht, wie man zwei Tabellen miteinander verknüpfen kann.

Die Tabellen:
1: TERMINE
id
datum
uhrzeit
kontakt

2: PERSONEN
id
name
email


Ich will nun automatisch bei einem Termin den Kontakt mit der jeweiligen E-Mail-Adresse verknüpfen.
Habe es schon auf verschiedene Arten probiert (WHERE/JOIN), aber komme einfach nicht zur lösung.
Es wäre total nett, wenn mir jemand den fertigen Codeschnipsel (sind wohl nur ein paar zeilen) posten könnte, bei der zum Schluss eine Variable $email mit der jeweiligen Adresse rauskommt.

Das wäre supernett, danke!
 
habe es, wie gesagt mit der join-funktion probiert, wie hier beschrieben:
http://www.phpforum.de/archiv_54030_Join@in@PHP@ausgeben_anzeigen.html

und dann noch mit einer WHERE-abfrage, aber das hat auch nicht so ganz geklappt.

hatte dazu die variable termine.kontakt als $kontakt ausgelesen. und dann folgendes gemacht:

PHP:
$query = mysql_query("SELECT * FROM personen WHERE name=" . $kontakt)

 $result = mysql_fetch_row($query);
 $email = $result[2];

habe daraus aber nur eine fehlermeldung erzeugen können, weiß grad aber nicht welche, muss ich nachher nochmal reproduzieren.
 
Hi,

also es ist noch ein bisschen unklar. Ich verstehe nicht wie Du die beiden Tabellen miteinander verknüpfst. Du brauchst meiner Meinung nach noch eine Verknüpfungstabelle da ja zu einer E-Mail Addresse mehrere Termine gehören könnten oder irre ich mich hier?

Prinzipiell ist ein JOIN (INNER JOIN, ist das gleiche) schon o.k.

Ich habe jetzt mal angenommen das in der TERMIN Tabelle die id mehrfach vorkommen kann, dann würde die query so aussehen. Mit mysql und php würde ich mir den String so zusammenbauen:
PHP:
$query = 
"SELECT
        a.*
FROM
        TERMINE a
JOIN
        PERSONEN b
ON 
        a.id = b.id
WHERE
        b.email = '$kontakt'  "

Schau mal ob Dir das weiterhilft, ich glaube du must den gesamten Query-String in " " packen. Was steht denn in der TERMIN tabelle unter Kontakt, etwa auch die email ? Wenn ja, könntest du das als Verknüpfungsbedingung nehmen.

Grüße
 
Ja, da hast du eigentlich recht, ABER ich habe vorher schon einen Termin per SELECT * termin WHERE id = $id aufgerufen.
Also sowas wie eine Übersichtsseite für einen einzelnen Termin. Also gibt es zu diesem Termin eine direkte E-Mail-Adresse und nicht umgekehrt eine Adresse zu mehreren Terminen.

Ich weiß ja eben nicht, wie ich die Tabellen verknüpfe, das ist das Problem.

Nein, in der Spalte kontakt.termine steht ein Name, der gleiche wie in name.personen. Und daraus soll dann die E-Mail-Adresse generiert werden.
 
Hi,

-- 2 Tabellen
-- id ist der pirmarschlüssel für jeden datensatz in der tabelle
-- Einzige Möglichkeit die beiden Tabellen zu Verknüpfung wäre ja dann der Name:

das steht in meiner TERMIN tabelle:
SQL:
id;		datum;		uhrzeit;		kontakt
1;		2009-06-09;		14:21:27;		tick
2;		2009-06-09;		14:21:40;		tack
3;		2009-06-09;		14:21:56;		tick
4;		2009-06-09;		14:22:10;		tuck
5;		2009-06-09;		14:27:37;		tuck
6;		2009-06-09;		14:27:40;		tuck

das steht in meiner KONTAKT tabelle:
SQL:
id;		kontakt;		email
1;		tick;		        tick@foo.de
2;		tack;		tack@foo.de
3;		tuck;		tuck@foo.de

und das ist die Query wenn ich schon eine id selectiert habe und die email dazu bekommen möchte:

SQL:
select * 
from kontakt 
join termine on kontakt.kontakt = termine.kontakt
where termine.id = 2

ergebnis:
SQL:
id;		kontakt;		email;		id_1;		datum;		uhrzeit;		kontakt_1
2;		tack;		tack@foo.de;		2;		2009-06-09;		14:21:40;		tack

Ich hoffe das hilft.

Grüße
 
Zuletzt bearbeitet von einem Moderator:
danke planb für deine anregung. habe es jetzt ähnlich gelöst. zwar nicht ganz so elegant, wie es vielleicht sein sollte, aber es funktioniert.
ich muss mich aber wirklich intensiver mit dem thema befassen.

danke allen!
 
Zurück