Hallo,
Ich kann mir das so vorstellen, daß Du mit drei Tabellen arbeitest:
Tabelle Personen:
personen_id [Primärschlüssel]
name
vorname
...
Beispiel:
1,Huber,Hans
2,Müller,Anita
3,Maier,Franz
Tabelle Eigenschaften
eigenschafts_id [Primär-Schlüssel]
bezeichnung
...
Beispiel:
1,Schach
2,Musik
3,Tanzen
4,Tennis
Tabelle Personeneigenschaften:
personen_id [Primärschlüssel]
eigenschafts_id [Primärschlüssel]
(Beide Felder zusammen sollten u.a. deshalb den Primärschlüssel bilden, damit Du doppelte Einträge vermeidest)
Beispiel
1,1
1,2
2,3
3,2
3,3
3,4
Mit einer Anweisung wie
SELECT p.name,p.vorname,count(e.eichenschafts_id)
FROM personen p, eigenschaften e, personen_eigenschaften ep
WHERE p.personen_id = ep.personen_id
AND e.eigenschafts_id = ep.eigenschafts_id
AND e.bezeichnung IN ('Schach','Musik')
GROUP BY p.name,p.vorname
würdest Du alle Personen finden, welche mindestens eine der angegebenen Eigenschaften haben.
Performanter würde das sein, wenn Du schon vorher die Eigenschaften an deren ID's bestimmen kannst ( Wie etwa durch ein geeignetes Auswahlfeld).
SELECT p.name,p.vorname,count(ep.eichenschafts_id)
FROM personen p, personen_eigenschaften ep
WHERE p.personen_id = ep.personen_id
AND ep.eigenschafts_id IN (1,2)
GROUP BY p.name,p.vorname
Es gehen dann auch andere Spielarten von Abfragen, aber so im wesentlichen ist das sicherlich eine recht flexible Lösung, so denke ich zumindest.
Alternativ, falls Dir das zu kompliziert erscheint, kannst Du auch der Personen-Tabelle ein Feld für die Eigenschaften verpassen.
Beispiel:
1,Huber,Hans,Schach Musik
2,Müller,Anita,Tanzen
3,Maier,Franz,Musik Tanzen Tennis
Und das so abfragen
SELECT name, vorname
FROM personen
WHERE eigenschaften LIKE '%Schach%'
OR eigenschaften LIKE '%Musik%'
Aber das hat doch einige Nachteile, wie etwa daß die Anzahl der Hobbies durch die Größe des Feldes eigenschaften begrenzt ist ( bei char-Feldern i.d.R 255 Zeichen), oder es keine vernünftige Möglcihkeiten gibt, anhand der Anzahl der gefundenen Eigenschaften pro Person eine Reihung durchzuführen (best fit), und noch vieles mehr.
Anmerkung: Mir ist schon klar, daß einige (viel) Datenbanken auch mit JOIN umgehen können, und daruch auch performanter sein können, aber die obigen Abfragen sind so halbwegs datenbankneutral.
Mir sind da sicherlich noch einige wirklcih wichtige Dinger nicht eingefallen, aber fürs erste hoffe ich, Dir eine Ausgangsabasis für weiter Gedanken vermittelt zu haben
Grüße
Klaus