Mindwinder
Mitglied
Hi liebe Leute,
ich benötige mal einen Denkanstoß für folgendes Problem:
4 Tabellen:
user -> id, passwort,...
freunde -> id, user_id, adresse, name, standart, attribute, ...
Die Tabelle freunde soll per user um unterschiedliche Attribute erweitert werden, hierzu die 2 Tabellen:
attribute -> id, user_id, AttributName
werte_der_attribute -> id,freunde_id,attribut_id, wert
Eintragen und Auslesen stellt soweit kein Problem dar - allerdings komme ich nicht drauf wie ich eine Suche realisieren kann, die mehrere der zusätzlichen Attribute mit AND verknüpft.
Erster Ansatz war ein Join von freunde auf werte_der_attribute
und dann eine WHERE clause mit attribut_id=x AND value=Y - klappt solange ich nur nach einem bestimmen Wert Suche. Ein OR würde auch funktionieren über attribut_id=x AND value=Y OR attribut_id=s AND value=t. Bin schon am überlegen, ob ich die OR Verknüpfung benutze, dann die Ergebnisse pro freunde_id zähle und diese gegen die Anzahl der übergebenen Suchparameter abgleiche, aber irgendwie muss das doch einfacher gehen.
Hoffe mal das meine Beschreibung einigermaßen verständlich ist und irgendwer eine Lösung parat hat.
Andere Realisierungen finde ich irgendwie nicht so elegant, können wir aber gerne diskutieren.
1. freunde um ein Feld erweitern und dort die Werte abspeichern in etwa in der Form attribut_id="wert"; und eine Suche dann über reguläre Ausdrücke
Nachteil: Performance
2. freunde oder werte der attribiute um x Felder erweitern und in der Tabelle attribute max. x Felder zulassen
Nachteil: die Anzahl der Attribute ist beschränkt und es gibt Unmengen an Leereinträgen
3. Eine Temporäre Tabelle erzeugen
Nette Grüße,
Mindwinder
ich benötige mal einen Denkanstoß für folgendes Problem:
4 Tabellen:
user -> id, passwort,...
freunde -> id, user_id, adresse, name, standart, attribute, ...
Die Tabelle freunde soll per user um unterschiedliche Attribute erweitert werden, hierzu die 2 Tabellen:
attribute -> id, user_id, AttributName
werte_der_attribute -> id,freunde_id,attribut_id, wert
Eintragen und Auslesen stellt soweit kein Problem dar - allerdings komme ich nicht drauf wie ich eine Suche realisieren kann, die mehrere der zusätzlichen Attribute mit AND verknüpft.
Erster Ansatz war ein Join von freunde auf werte_der_attribute
und dann eine WHERE clause mit attribut_id=x AND value=Y - klappt solange ich nur nach einem bestimmen Wert Suche. Ein OR würde auch funktionieren über attribut_id=x AND value=Y OR attribut_id=s AND value=t. Bin schon am überlegen, ob ich die OR Verknüpfung benutze, dann die Ergebnisse pro freunde_id zähle und diese gegen die Anzahl der übergebenen Suchparameter abgleiche, aber irgendwie muss das doch einfacher gehen.
Hoffe mal das meine Beschreibung einigermaßen verständlich ist und irgendwer eine Lösung parat hat.
Andere Realisierungen finde ich irgendwie nicht so elegant, können wir aber gerne diskutieren.
1. freunde um ein Feld erweitern und dort die Werte abspeichern in etwa in der Form attribut_id="wert"; und eine Suche dann über reguläre Ausdrücke
Nachteil: Performance
2. freunde oder werte der attribiute um x Felder erweitern und in der Tabelle attribute max. x Felder zulassen
Nachteil: die Anzahl der Attribute ist beschränkt und es gibt Unmengen an Leereinträgen
3. Eine Temporäre Tabelle erzeugen
Nette Grüße,
Mindwinder