@yemet
Dziękuję za odpowiedź.
Proponowałbym najpierw dokończyć ten kurs SQLa który dopiero co zacząłeś
Do przerobienia jakiegokolwiek kursu zabieram się od początku roku, ale wiecznie czasu brak - mam nadzieję, że za niedługo się ogarnę i wygospodaruję trochę czasu na to bo coraz częściej SQL jest mi potrzebny.
Niestety moja przygoda z SQLem i zestawieniami w subiekcie na razie bazuje na tym, że nie ma czasu na przerobienie jakiegokolwiek kursu i uczę się na bieżąco starając się wywnioskować co jest do czego.
Na ten moment w większości przypadków wystarcza, ale czasami jednak zatnę się jak tutaj na tym czy w ogóle jest wartość w SQL do której porównując zawsze zostanie zwrócone TRUE, a nie potrafiłem znaleźć odpowiedzi w google.
Ale co tu {I:select} = 1 w ogóle chcesz osiągnąć?
Potrzebuję w zestawieniu dorobić kontrolkę, w której można wybrać wartość np. "TAK" i wtedy bierze pod uwagę w filtrowaniu wartość z innej kontrolki, a jak wartość "NIE" to wtedy ignoruje wartości z innej kontrolki.
Dokładniej:Stworzyłem zestawienie, które wylicza jaką ilość produktów należy wyprodukować w zależności od ustawień w kontrolkach.
Kontrolki jakie w nim istnieją to
standardowe filtrowanie według Grupa, Cecha, Flaga, model
Są też kontrolki niestandardowe jak:
- kontrolka, w której ustawia, że zestawienie ma wyświetlać tylko produkty, których na magazynie jest poniżej
x procent ich własnego stanu minimalnego
- kontrolka, w której ustawia się ile % stanu minimalnego produktu ma finalnie być po wycięciu
oraz ta którą chce żeby można było wybrać czy ma być brana pod uwagę czy nie:
- kontrolka, w której ustawia się cechy, ale wyświetla tylko produkty, które posiadają wszystkie z wybranych w tej kontrolce cechy np. przy wyborze "czerwony" i "dzwonek" pokaże tylko rowery, które są czerwone i mają dzwonek.
Jedyne rozwiązanie jakie wpadłem to:
- dodanie kontrolki, która w zależności od wartości załącza powyższą kontrolkę lub każe ją zignorować przy filtrowaniu (to jest waśnie {I:select} - 1 ignoruje, a inne wartości załączają kontrolkę- finalnie będzie tutaj inna kontrolka, ale to nie ma znaczenia).
- W filtrowaniu dodać CASE WHEN które jeżeli kontrolka {I:select} przyjmuje 1 to zwracana jest zawsze wartość TRUE, a w innym wypadku następuje porównanie do innej wartości
Poniżej kod z mojego zestawienia:
WHERE
(
SELECT COUNT(ctw_Nazwa) AS ileCech
FROM sl_CechaTw
WHERE ctw_id in ({CHL_DB:SELECT ctw_id, ctw_Nazwa FROM sl_cechaTw ORDER BY ctw_Nazwa:Cecha - towar musi mieć:22:BL})
) = CASE WHEN {I:select} = 1
THEN
(
SELECT COUNT(ctw_Nazwa) AS ileCech
FROM sl_CechaTw
WHERE ctw_id in ({CHL_DB:SELECT ctw_id, ctw_Nazwa FROM sl_cechaTw ORDER BY ctw_Nazwa:Cecha - towar musi mieć:22:BL})
)
ELSE cechaTabela.Cecha END