Hej,
Czy da się napisać zestawienie tak, aby wyświetlało towary, które spełniają wszystkie opcje zaznaczone w kontrolce CHL_DB?
Przykład:
Towar_1 posiada przypisane cechy A, B, C, D
Towar_2 posiada przypisane cechy A, B, D, E
Towar_3 posiada przypisane cechy B, C, E
I chciałbym móc w zestawieniu zaznaczyć w kontrolce CHL_DB cechy B i C, tak żeby finalnie zostały wyświetlone następujące towary:
Towar_1
Towar_3
Wpadłem tylko na dwa pomysły, ale jeden jest zbyt skomplikowany, a drugi nie do końca wiem jak zrobić:
1 sposób: Użycie dwóch kontrolek DB i napisanie zestawienia tak, żeby w jednej kontrolce wybierać cechę B, a w drugiej C przy zastosowaniu INTERSECT
2 sposób:
SELECT tw_symbol, COUNT(*)
FROM tw__towar
INNER JOIN
tw_CechaTw ON cht_IdTowar = tw_Id and cht_IdCecha IN (22,41)
GROUP BY tw_symbol
tym sposobem INNER JOIN ogranicza wyświetlane towary do zawierających przynajmniej jedną z cech z kontrolki (dla uproszczenia podałem teraz tylko dwie wartości w nawiasach), a COUNT policzy ile razy występuje dany towar.
Wtedy gdybym w HAVING porównał wartość COUNT = ILE OPCJI ZOSTAŁO WYBRANYCH to otrzymałbym tylko te wartości, które zawierają wszystkie zaznaczone wartości.
Nie wiem niestety jak (i czy się da) wyliczyć ilość wybranych opcji.
Tak, że np. jak ktoś w kontrolce CHL_DB wybierze opcje "Przykład_1", "Przykład_2", "Przykład_3" to wyświetli wartość "3" ponieważ trzy opcje są wybrane