select pobierający grupę główną

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

marekkuj
Posty: 12
Rejestracja: 04 lis 2009, 19:06
Rola: Inny
Wersja: 9.6.1

select pobierający grupę główną

Post autor: marekkuj »

Hej,
Jaki jest prosty sposób na pobranie nazwy grupy głównej w której znajduje się dany towar? chodzi o to że jest coś takiego: grupaA/grupaB/grupaC/Towar i ja potrzebuję nazwę grupaA ale czasem to zagnieżdżenie grup może być głębsze np grupaA/grupaB/grupaC/grupaD/Towar .

xtomi
Posty: 408
Rejestracja: 16 lut 2010, 21:24
Rola: Administrator CDN XL
Wersja: 10

Re: select pobierający grupę główną

Post autor: xtomi »

Możesz wykorzystać funkcje TwrGrupaPelnaNazwa np

Kod: Zaznacz cały

select 
cdn.TwrGrupaPelnaNazwa(twg_gronumer) as grupa
 from CDN.TwrKarty
join CDN.TwrGrupy on Twr_GIDNumer=TwG_GIDNumer and Twr_GIDTyp=TwG_GIDTyp
Funkcja zwróci całą ścieżkę grupy

marekkuj
Posty: 12
Rejestracja: 04 lis 2009, 19:06
Rola: Inny
Wersja: 9.6.1

Re: select pobierający grupę główną

Post autor: marekkuj »

Dzięki, bardzo przydatne !

Robert666
Posty: 223
Rejestracja: 22 kwie 2008, 12:36
Rola: Administrator CDN XL
Wersja: 9.0 HR1
Lokalizacja: Gdańsk

Re: select pobierający grupę główną

Post autor: Robert666 »

Małe sprostowanie.. XTOMI podpiął grupę a w zasadzie wszystkie grupy do których należy towar...

Grupa główna towarów jest w innej tabeli:

Kod: Zaznacz cały

select
cdn.TwrGrupaPelnaNazwa(twg_gronumer) as grupa
from CDN.TwrKarty
join CDN.TwrGrupyDom on Twr_GIDNumer=Twd_GIDNumer and Twr_GIDTyp=Twd_GIDTyp
XL 9.6 HF1 - nic tylko się pociąć...

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: select pobierający grupę główną

Post autor: elmiq »

Robert666 pisze:Małe sprostowanie.. XTOMI podpiął grupę a w zasadzie wszystkie grupy do których należy towar...

Grupa główna towarów jest w innej tabeli:

Kod: Zaznacz cały

select
cdn.TwrGrupaPelnaNazwa(tgd_gronumer) as grupa
from CDN.TwrKarty
join CDN.TwrGrupyDom on Twr_GIDNumer=Tgd_GIDNumer and Twr_GIDTyp=Tgd_GIDTyp
No tutaj akurat to nie mamy grupy głównej, tylko "najniższą" grupę do której należy towar. I tak mając grupa1/grupa2/grupa3/towar, będzie tu wskazanie na grupa3, a nie jak interesowało założyciela wątku grupa1.

Czyli to samo co łącząc twrkarty + 2 x twrgrupy = najbardziej powierzchowne wiązanie do grupy towarowej.

Edit: poprawiłem jeszcze kod twg = tgd dla twrgrupydom.
Mateusz Świerkosz

http://elmiq.blogspot.com/

Robert666
Posty: 223
Rejestracja: 22 kwie 2008, 12:36
Rola: Administrator CDN XL
Wersja: 9.0 HR1
Lokalizacja: Gdańsk

Re: select pobierający grupę główną

Post autor: Robert666 »

No tutaj akurat to nie mamy grupy głównej, tylko "najniższą" grupę do której należy towar. I tak mając grupa1/grupa2/grupa3/towar, będzie tu wskazanie na grupa3, a nie jak interesowało założyciela wątku grupa1.
Nieprawda drogi Panie. Nie najniższą grupę - tylko pełną ścieżkę GRUPY DOMYŚLNEJ towaru.
Czyli to samo co łącząc twrkarty + 2 x twrgrupy = najbardziej powierzchowne wiązanie do grupy towarowej.
Że co ??

Edit: poprawiłem jeszcze kod twg = tgd dla twrgrupydom.
Mea culpa. Bardzo dziękuję.

A tak poza tym... Co "poeta" ma na myśli mówiąc "GRUPA GŁÓWNA" ??
XL 9.6 HF1 - nic tylko się pociąć...

elmiq
Posty: 1025
Rejestracja: 23 sie 2010, 10:04
Rola: Administrator CDN XL
Lokalizacja: Warszawa

Re: select pobierający grupę główną

Post autor: elmiq »

W twrgrupydom mamy najniższą grupę związaną z kartą towaru. A to że robisz select gdzie wyciągasz wartość zwracaną przez funkcję cdn.TwrGrupaPelnaNazwa poprzez przekazanie gidu z tej tabeli to inna sprawa.
Mateusz Świerkosz

http://elmiq.blogspot.com/

ArturA
Posty: 1
Rejestracja: 17 maja 2016, 14:37
Rola: Inny
Wersja: 2016

Re: select pobierający grupę główną

Post autor: ArturA »

Witam,
Chciałbym by moje zapytanie zwracało tylko grupę główną danego towaru (bez całej ścieżki). Przykładowo gdy mamy: Grupa główna -> podgrupa -> podrgrupa -> nazwa_towaru Zwracało nam nazwę grupy głównej.
Dziękuje za wszelkie wskazówki.

taszek
Posty: 609
Rejestracja: 12 wrz 2012, 13:20
Rola: Administrator CDN XL
Wersja: 2016

Re: select pobierający grupę główną

Post autor: taszek »

Tutaj masz funkcję, która ci zwróci nazwę grupy głównej:

Kod: Zaznacz cały

CREATE FUNCTION [CDN].[TwrGrupaGlownaNazwa] (@p_TwrId INT)
RETURNS VARCHAR(255)  AS
BEGIN

-- Nie podano numeru grupy
IF @p_TwrId is null or @p_TwrId = 0 Return '<nie określono>'

DECLARE @TwG_Kod varchar(255)
DECLARE @TwG_Typ int
DECLARE @TwG_Firma int
DECLARE @TwG_Numer int

SELECT @TwG_Kod=TwG_Kod, @TwG_Typ=TwG_GROTyp, @TwG_Firma=TwG_GROFirma, @TwG_Numer=TwG_GRONumer
FROM CDN.TwrGrupy
WHERE TwG_GIDTyp=-16 and TwG_GIDNumer=@p_TwrId

WHILE @TwG_Numer<>0 and @TwG_Kod is not null
BEGIN
        SELECT @TwG_Kod=TGD_Kod, @TwG_Typ=TGD_GROTyp, @TwG_Firma=TGD_GROFirma, @TwG_Numer=TGD_GRONumer
        FROM cdn.TwrGrupyDom
        WHERE TGD_GIDTyp=@TwG_Typ and TGD_GIDFirma=@TwG_Firma and TGD_GIDNumer=@TwG_Numer
END

IF @TwG_Kod Is Null SET @TwG_Kod='<nieprawidłowe>'

RETURN (@TwG_Kod)

END
A tutaj masz przykładowe wywołanie:

Kod: Zaznacz cały

SELECT CDN.TwrGrupaGlownaNazwa(TwG_GrONumer) 
FROM CDN.TwrGrupy
WHERE TwG_GIDNumer = 23082 AND TwG_GIDTyp = 16
Pozdrawiam
Wojtek Cyrklewicz

Awatar użytkownika
czesiomisio
Posty: 14
Rejestracja: 15 cze 2015, 15:09
Rola: Użytkownik CDN XL
Wersja: 2016

Re: select pobierający grupę główną

Post autor: czesiomisio »

W XL-u jest funkcja skalarna zwracająca pełną ścieżkę grup towaru, moża tak:

Kod: Zaznacz cały

SELECT LEFT(CDN.TwrGrupaPelnaNazwa(TwG_GrONumer), CHARINDEX('/', CDN.TwrGrupaPelnaNazwa(TwG_GrONumer))-1)
FROM CDN.TwrGrupy
WHERE TwG_GIDNumer = 18418 AND TwG_GIDTyp = 16

ODPOWIEDZ