Sven Rautenberg: (MySQL) n:m-Relation

Beitrag lesen

Moin!

<beispiel>

Objekt 57

Eigenschaft1
Eigenschaft2 x
Eigenschaft3 x
Eigenschaft4
Eigenschaft5 x
Eigenschaft6
Eigenschaft7 x
Eigenschaft8


table_relation

id_objekt , id_eigenschaft

57,2
57,3
57,5
57,7

</beispiel>

Die Lösung deines Problems lautet "OUTER JOIN".

Wenn ich dich richtig verstanden habe, dann willst du für einerseits wissen, welche Eigenschaften es überhaupt gibt, und welche davon einem bestimmten Objekt zugeordnet sind.

Ausgehend von dieser Überlegung musst du von der Tabelle mit den Eigenschaften ausgehen und diese entsprechend SELECTieren. Darauf machst du dann einen OUTER JOIN mit deiner m:n-Tabelle, und meinetwegen dann noch einen JOIN auf die Objekttabelle.

Der OUTER JOIN (den MySQL wohl erst ab einer gewisse 3er-Version kann, keine Ahnung) sorgt dafür, dass auf jeden Fall alle Elemente der ersten Tabelle selektiert werden, und die Elemente der zweiten Tabelle nur bei Übereinstimmung zugeordnet werden - andernfalls wird NULL zugeordnet:

id bez.          | e-id  o-id
1  eigenschaft1  |  1    null
2  eigenschaft2  |  2    57
3  eigenschaft3  |  3    57
4  eigenschaft4  |  4    null
5  eigenschaft5  |  5    57
6  eigenschaft6  |  6    null
7  eigenschaft7  |  7    57

Wenn du diese Tabelle hast, kannst du recht leicht herausfinden, welche Eigenschaften es gibt, und welche davon dem Objekt 57 zugeordnet sind (und diese z.B. als Checkbox checked machen).

- Sven Rautenberg