Forum Użytkownikow Subiekt GT

InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Paweł Em w Styczeń 12, 2021, 16:38:39

Tytuł: Łączenie tabel w sql c.d
Wiadomość wysłana przez: Paweł Em w Styczeń 12, 2021, 16:38:39
Witam wszystkich użytkowników.

Na wstępie dziękuję bardzo użytkownikowi birds22 za pomoc, teraz poszedłem dalej i został mi ostatni aspekt żebym mógł pobrać wszystkie interesujące mnie dane do excela i tam je przetwarzać.
Mianowicie komplety u mnie składają się z jednego lub dwóch składników. Jeżeli są dwa to wtedy każdą pozycję wypisuje mi w dwóch linijkach bo w każdej z nich jest inny składnik(załącznik).
Pytanie brzmi czy jest możliwość dołączenia tych skłądników tak aby każdy asortyment mający dwa składniki był w jednej linii a nie dwóch?
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: maniootek w Styczeń 12, 2021, 19:06:32
SELECT
tw_Symbol
,TowarSkladnikiKompletu = (
  STUFF (
(
  SELECT
'|' + (SELECT tw_Symbol FROM tw__Towar WHERE tw_Id = KPL.kpl_IdSkladnik) + 'x' + CAST(KPL.kpl_Liczba AS VARCHAR(MAX))
  FROM
tw_Komplet KPL
JOIN tw__Towar on kpl_IdKomplet = tw_Id
  WHERE
tw_Id = TOWAR.tw_Id FOR XML PATH ('')
),
1,
1,
''
  )
)
FROM tw__Towar TOWAR
WHERE tw_Rodzaj = 8
ORDER by tw_Symbol
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: yemet w Styczeń 13, 2021, 08:41:14
Jeśli masz SQL-a 2017 lub nowszego to można to napisać prościej korzystając:

https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15

Na starsze wersje ktoś zrobił odpowiednik (sam używam):
https://github.com/orlando-colamatteo/ms-sql-server-group-concat-sqlclr/tree/fc8c39821b907b8d00fcf072d71c2353a3692339
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: Paweł Szczygiel w Styczeń 13, 2021, 13:18:54
Znacznie lepszym podejściem jest utworzenie widoków na bazie danych i podłączenie ich do Excela,  bezpośrednio jako źródło do tabel przestawnych.
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: Paweł Em w Styczeń 13, 2021, 23:04:17
Dzięki Panowie!
Wszystko działa dzięki maniootek.
Yemet - dla podniesienia swoich umiejętności również sprawdzę Twoje rozwiązanie:)
Paweł Szczegieł jakie zalety są taakiego rozwiązania?
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: yemet w Styczeń 14, 2021, 08:15:27
Widoki zazwyczaj są bardzo pożyteczne. Baza subiekta jest nimi napakowana. Są wykorzystywane w wielu miejscach przez sam program - od list dokumentów po zestawienia. W wielu przypadkach ułatwiają nanoszenie poprawek i pozwalają na tworzenie wielu różnych raportów na podstawie jednego zestawu danych - przykładowo zestawienia sprzedaż wg kontrahentów i sprzedaż wg asortymentu są zrobione w oparciu o ten sam widok.

Załóżmy, że planujesz zrobić bardzo podobny arkusz, gdzie będzie miał jedno czy dwa pola więcej - wtedy będziesz musiał całe to zapytanie przeklejać do arkusza i rozbudowywać a tak mógłbyś odwołać się do widoku i tylko doczepić do niego dodatkowe pola. Jeśli będziesz miał jakiś babol w obliczeniach gdzieś walniesz plusa zamiast minusa albo podobną bzdetę - musisz poprawić to w arkuszu (i nie daj boże jeszcze ten arkusz rozesłać po 3/4 firmy) a jak zrobisz widok w bazie to wystarczy poprawka w bazie i odświeżenie danych w arkuszu.
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: Paweł Szczygiel w Styczeń 14, 2021, 08:33:23
Temat jest bardzo szeroki o określony pojęciem BI. Jeżeli mówimy o dobrych praktykach w BI to nie ma mowy o rozwiązaniach w których należy kopiować cookolwiek.
Podstawowy BI można oprzeć o widoki - to pozwala na analizę bieżącą bez czynności pośrednich takich jak kopiowanie.
Tytuł: Odp: Łączenie tabel w sql c.d
Wiadomość wysłana przez: Paweł Em w Styczeń 14, 2021, 15:24:59
Okej, pojęcie widoków jest dla mnie nowe ponieważ póki co się uczę generalnie pracuję na subiekcie od lat jako normalny użytkownik. Excela oraz  vba znam w jakimś tam stopniu.
Generalnie staram się zrobić program do zlecania na produkcję, dlatego używając wbudowane makro w przycisk i to zapytanie sql automatycznie pobieram interesujące mnie tabele do excela(wiadomo cena jest niepotrzebna ale będę również chciał analizować dane więc nie zaszkodzi) Napisałem także makro które nazwę każdego produktu rozbija na kolumny i tym sposobem mam interfejs pozwalający przeglądać indeksy i je filtrować, po wskazaniu odpowiedniego produktu i wpisaniu ilości wyeksportuje na listę w osobnym pliku i będzie można to wydrukować lub przesłać na produkcję. W przyszłości może dodam komplementację żeby odrazu montować jak zejdzie  z produkcji. Generalnie chodzi o zwiększenie wglądu w stan realizacji na produkcji,bo narazie zlecamy na kartkach długopisem bo tak najszybciej :D. Jesteście Panowie bardziej doświadczeni w tym temacie, czy to dobra droga czy lepiej będzie oprzeć to wszystko na widokach? Wiem że w subiekcie można wygenerować zamówienie do dostawcy ale za długo by to trwało.