Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Lucus w Luty 24, 2022, 16:00:35
-
Hej,
Tworzę sobie w zestawieniu kontrolkę z wartością (dowolna) jak poniżej:
{CHL_DB: SELECT -1, '(dowolna)' UNION ALL SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw:Grupa:-1:(dowolna)}
Problem mam taki, że mimo wpisania w wartości domyślnej -1 po włączeniu zestawienia nie wyświetla mi się lista produktów (samo kliknięcie wylicz też nic nie daje).
Musze dopiero wejść w kontrolkę (tam jest zaznaczona opcja "dowolna") i dać ok, a następnie wylicz.
Czy da się jakoś sprawić, aby od razu wyświetlały się towary z dowolnej grupy?
Może częściowym rozwiązaniem byłoby zaznaczenie od razu wszystkich grup? (tylko jak to napisać?)
Zauważyłem też, że w "Towary i usługa" zaznaczenie grupa dowolna wyświetla również towary z grupą "brak", a w zestawieniu własnym są one pomijane. Z czego to wynika?
-
"Brak" to nie jest prawdziwa grupa. Towary, które są oznaczone grupą "brak" mają NULLa w tw_idgrupa. W słowniku grup towarowych nie ma wpisu z NULLem. To samo dotyczy innych słowników, np. cech i kategorii. Da się to z tym poradzić np. isnullem na tw_idrgupa i joinem na słownik grup, który to uwzględni.
Spróbuj tak (pisane z pamięci):
... in ( ({CHL_DB: SELECT -1, '(dowolna)' UNION ALL SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw:Grupa:-1:(dowolna)})
or -1 in ({CHL_DB: SELECT -1, '(dowolna)' UNION ALL SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw:Grupa:-1:(dowolna)})
)
-
Działa, tylko bez objęcia w podwójne nawiasy :)
Tylko:
... in ({CHL_DB: SELECT -1, '(dowolna)' UNION ALL SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw:Grupa:-1:(dowolna)})
or -1 in ({CHL_DB: SELECT -1, '(dowolna)' UNION ALL SELECT grt_Id, grt_Nazwa FROM sl_GrupaTw:Grupa:-1:(dowolna)})
Dla odwiedzających w przyszłości - dodając ORDER BY trzeba by nazwać wszystkim nazwom na liście wspólne określenie:
... in ({CHL_DB: SELECT -1, '(dowolna)' AS Nazwa UNION ALL SELECT grt_Id, grt_Nazwa AS Nazwa FROM sl_GrupaTw ORDER BY Nazwa:Grupa:-1:(dowolna)})
or -1 in ({CHL_DB: SELECT -1, '(dowolna)' AS Nazwa UNION ALL SELECT grt_Id, grt_Nazwa AS Nazwa FROM sl_GrupaTw ORDER BY Nazwa:Grupa:-1:(dowolna)})
Dzięki Wielkie :D
-
Uściślę odnoście ORDER:
Jeżeli chcemy sortować po aliasie to musi on być w pierwszym SELECT. W kolejnym nie musi go być wcale albo może być zupełnie inny
Poniższe też zadziała:
SELECT -1, '(dowolna)' AS Nazwa
UNION ALL
SELECT grt_Id, grt_Nazwa AS NazwaInna
FROM sl_GrupaTw
ORDER BY Nazwa
Ale równie dobrze możesz posortować po numerze kolumny czyli ORDER BY 2 i nie musisz mieć aliasu.
-
@birds22
Dzięki za twój post. Nie wiedziałem, że to działa w ten sposób.