Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Adrian Szfix w Maj 18, 2022, 18:48:34

Tytuł: Zestawienie towarów wraz z cechą, modelem oraz grupą
Wiadomość wysłana przez: Adrian Szfix w Maj 18, 2022, 18:48:34
Witam wszystkich formumowiczów,
pierwszy raz się udzielam więc proszę o wyrozumiałość:)
próbuję wykonać własne zestawienie do Subiekta GT.
Ma ono wczytywać listę towarów z polami Nazwa, Symbol, Grupa, Model, Cecha.
Wykonałem proste polecenia które wyciągają takie dane jak Model czy Cecha ale nie potrafię ich połączyć w jedno zapytanie.
Nie odnalazłem również informacji jak pobrać Grupę. Jeżeli ktoś ma pomysł to proszę o pomoc ewentualnie proszę o kontakt, zapłacę.

1. Pobiera model
SELECT Symbol = tw_Symbol,
      Nazwa = tw_Nazwa,
  Model = mdt_Nazwa
FROM sl_ModelTw
    JOIN sl_ModelTowar on mtw_IdModel = mdt_Id
    JOIN tw__Towar on mtw_IdTowar = tw_Id

2. Pobiera Cechę
SELECT TowarSymbol = tw_Symbol,
      TowarNazwa = tw_Nazwa,
      Towar_Cecha = ctw_Nazwa
FROM sl_CechaTw
    JOIN tw_CechaTw on cht_IdCecha = ctw_Id
    JOIN tw__Towar on cht_IdTowar = tw_Id


Pozdrawiam
Adrian
Tytuł: Zestawienie towarów wraz z cechą, modelem oraz grupą
Wiadomość wysłana przez: yemet w Maj 18, 2022, 19:24:21
Słownik grup towarowych jest w tabeli w sl_GrupaTw. Od strony towaru jest to pole tw_idGrupa.

Co do samego złączenia to żadna filozofia.... po prostu dodajesz kolejne joiny np.:

.....
FROM sl_ModelTw
    JOIN sl_ModelTowar on mtw_IdModel = mdt_Id
    JOIN tw__Towar on mtw_IdTowar = tw_Id
    JOIN tw_CechaTw on cht_IdTowar = tw_Id
    JOIN sl_CechaTw on cht_IdCecha = ctw_Id

Tylko, że powinieneś zacząć od tabeli tw__Towar i robić do pozostałych tabel LEFT JOINy jeśli nie chcesz pogubić towarów, które nie mają przypisanych cech i modeli.
Ja z modeli nie korzystam w ogóle i z głowy nie kojarzę jakie tam są dokładnie relacje. Co do cech to na pewno ci się rozmnożą rekordy tam gdzie towary będą miały więcej niż jedną cechę. Z tym sobie można poradzić na kilka sposobów. Najprostszy to string_agg ale potrzebny do tego SQL Server w wersji 2017 inaczej kombinacja z zapytaniami z XMLem (przepisy do znalezienia w necie) lub customowe funkcje. Ja korzystam z tej ostatniej opcji w takich sytuacjach.

I gorąco polecam korzystać z aliasów tabel, łatwiej się pisze zapytania z podpowiedziami od SSMSa ;)