Hallo,
das war mir alles zu unkonkret, also habe ich mal ein praktisches Beispiel gebastelt:
[lang code=sql]CREATE TABLE mx_name (
id int(11) NOT NULL auto_increment, # id-Name
name varchar(11) NOT NULL default '', # Name
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE mx_status (
sid int(11) NOT NULL auto_increment, # id-Status
status varchar(11) NOT NULL default '', # Status
PRIMARY KEY (sid)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE mx_matrix (
idV int(11) NOT NULL default 0, # id-horizontal
idH int(11) NOT NULL default 0, # id-vertikal
idS int(11) NOT NULL default 0, # id-Status
UNIQUE (idV,idH)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO mx_name VALUES
(1, 'Agnes'), (2, 'Bernd'), (3, 'Claus'),
(4, 'Dörte'), (5, 'Emil'), (6, 'Frank');
INSERT INTO mx_status VALUES
(1, 'verheiratet'), (2, 'geschieden'), (3, 'verfeindet'),
(4, 'Geschwister'), (5, 'verlobt'), (6, 'verliebt');
INSERT INTO mx_matrix VALUES
(1, 2, 2), (2, 3, 4), (3, 4, 6),
(4, 5, 1), (5, 6, 3), (6, 1, 5);
SELECT b.name, c.name, d.status
FROM mx_matrix AS a
LEFT JOIN mx_name AS b ON a.idH = b.id
LEFT JOIN mx_name AS c ON a.idV = c.id
LEFT JOIN mx_status AS d ON a.idS = d.sid;
erzeugt:
+-------+-------+-------------+
| name | name | status |
+-------+-------+-------------+
| Bernd | Agnes | geschieden |
| Claus | Bernd | Geschwister |
| D÷rte | Claus | verliebt |
| Emil | D÷rte | verheiratet |
| Frank | Emil | verfeindet |
| Agnes | Frank | verlobt |
+-------+-------+-------------+
6 rows in set (0.00 sec)[/code]
Das kannst Du jetzt nach belieben aufbohren ...
HTH
Gruss und Dank
Norbert