Upozornuju, nasledujici reseni je pro FireBird (zkouseno na verzi 2.5)!!! Pro MySLQ je to podobny, ale misto LIST se pouziva GROUP_CONCAT a mozna jeste nejake drobne odlisnosti.
Uz jsem to vyresil, vytvoril jsem si vlastni pohled
create view MujPohled (ID, Vlastnosti) as select distinct ID, LIST('*' || Vlastnost || '*','') from Tabulka group by ID;
coz mi vytvori radky v MujPohled neco jako
ID Vlastnosti
1 *A*
2 *A**B*
3 *A**C*
takze kazdou vlastnost mam ohranicenou z obou stran * a vyhledavam v nich pomoci napr
select ID from MujPohled where Vlastnosti like '*A*' and Vlastnosti like '*B*';
coz mi najde vsechny ID obsahujici A i B a logika WHERE se da kombinovat neomezene, coz se mi hodi, protoze hledani generuju z PHP pomoci pravidel vytvorenych uzivatelem pres par tlacitek - '(' ')' 'AND' 'OR' 'pridat vlastnost'.
Sice se mi to zda porad nejaky prekombinovany a mozna bude existovat jednodussi metoda, ale takhle je to na tech par tisic radku co resim i docela rychly a hlavne to skladani podminek funguje bezvadne.