Hi,
That seems close to a case of competences. The scenario is that you
have a list of employee with their competences. Table Skills, fields
Employee, Skill:
Joe TechnicalWriter
Joe ReadEnglish
Joe WriteEnglish
Joe ReadFrench
Joe ReadSpanish
Mary ReadEnglish
Mary WriteEnglish
Mary ReadFrench
Mary WriteFrench
.... ...
(Index no duplicated on the group (Employee, Skill) )
and then, you look for employee that have ALL from a set of competence,
stored in a table, RequiredSkills, one field, Skill:
WriteEnglish
ReadSpanish
(no duplicated values)
A possible solution is then:
SELECT Employee
FROM Skills As s INNER JOIN RequiredSkills As r
ON s.skill = r.skill
GROUP BY Employee
HAVING COUNT(*)=(SELECT COUNT(*) FROM RequiredSkills)
(see also
http://www.mvps.org/access/queries/qry0016.htm)
Here, with just the data shown, that will list Joe.
Indeed, it is far easier to add or remove data in a design where on quality
is stored by record, just add or delete a record, than in a string: try to
remove the "G", or the "A" in "BGMD". Try to append a "G", or a "A". Now,
do the same with a normalized design, much easier, isn't it. And finally,
make a research. The normalized approach can use indexes, while the
"personal encoding" like "BGMD" just can't ! Hey, it is your application,
use what you want, I am just supplying alternative idea in how to make the
stuff... in my opinion, easier, overall.
Hoping it may help,
Vanderghast, Access MVP