Autor Wątek: Odpowiednik TRUE  (Przeczytany 3959 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odpowiednik TRUE
« dnia: Maj 12, 2022, 15:52:42 »
Cześć,

Czy pisząc zestawienie SQL w subiekcie jest jakiś odpowiednik wartości TRUE?
Potrzebuję mianowicie umieścić w WHERE kod, w którym jeżeli kontrolka {I:} ma wartość 1 to wszystko jest TRUE, a w innym wypadku musi być to wartość taka sama jak inna kolumna

Przykład:
WHERE
tw_symbol = CASE WHEN {I:select} = 1 THEN TRUE ELSE tw_Nazwa END

Na ten moment jedyne rozwiązanie jakie znalazłem to np. taki zapis:
WHERE
tw_symbol = CASE WHEN {I:select} = 1 THEN tw_symbol ELSE tw_Nazwa END


Żeby nie zaśmiecać forum drugie pytanie :) :
Czy mogę jakoś daną kolumnę nazwać, żeby ją wykorzystywać później?
np.
(st_stan + 5)Miałem nadzieję, że zapis
(st_stan +5) AS "nowaKolumna" pozwala wykorzystywać później "nowaKolumna" w sekcji WHERE itp, ale tak to niestety nie działa

Z góry wszystkim dziękuję :)

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1271
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odpowiednik TRUE
« Odpowiedź #1 dnia: Maj 12, 2022, 15:58:23 »
Proponowałbym najpierw dokończyć ten kurs SQLa który dopiero co zacząłeś :)


Cześć,

Czy pisząc zestawienie SQL w subiekcie jest jakiś odpowiednik wartości TRUE?
Potrzebuję mianowicie umieścić w WHERE kod, w którym jeżeli kontrolka {I:} ma wartość 1 to wszystko jest TRUE, a w innym wypadku musi być to wartość taka sama jak inna kolumna

Przykład:
WHERE
tw_symbol = CASE WHEN {I:select} = 1 THEN TRUE ELSE tw_Nazwa END

Na ten moment jedyne rozwiązanie jakie znalazłem to np. taki zapis:
WHERE
tw_symbol = CASE WHEN {I:select} = 1 THEN tw_symbol ELSE tw_Nazwa END
Ale co tu {I:select} = 1 w ogóle chcesz osiągnąć?



Żeby nie zaśmiecać forum drugie pytanie :) :
Czy mogę jakoś daną kolumnę nazwać, żeby ją wykorzystywać później?
np.
(st_stan + 5)Miałem nadzieję, że zapis
(st_stan +5) AS "nowaKolumna" pozwala wykorzystywać później "nowaKolumna" w sekcji WHERE itp, ale tak to niestety nie działa

Z góry wszystkim dziękuję :)
W ten sposób nie można. Przy zastosowaniu CTE dałoby się coś takie zrobić ale nie zawsze to ma sens.
« Ostatnia zmiana: Maj 12, 2022, 16:05:14 wysłana przez yemet »

Offline Lucus

  • Użytkownik
  • **
  • Wiadomości: 50
  • Reputacja +0/-0
  • Wersja programu: Subiekt Gt 1.70
Odp: Odpowiednik TRUE
« Odpowiedź #2 dnia: Maj 13, 2022, 08:48:26 »
@yemet
Dziękuję za odpowiedź.
Cytuj
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

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1271
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Odpowiednik TRUE
« Odpowiedź #3 dnia: Maj 13, 2022, 09:33:23 »
To naprawdę wygospodaruj sobie kilka wieczorów na nauczenie się podstaw bo błądząc po omacku stracisz kupę czasu na zabawę w zgadywanie, np. czy w T-SQL jest boolean czy go nie ma.

Zawsze możesz poprosić kogoś o napisanie zestawienia odpłatnie. Takich ludzi na forum trochę jest. Mi też się czasem zdarza pisać zestawienia na zamówienie.

Forum Użytkownikow Subiekt GT

Odp: Odpowiednik TRUE
« Odpowiedź #3 dnia: Maj 13, 2022, 09:33:23 »