Strona 1 z 2
select pobierający grupę główną
: 14 wrz 2010, 10:37
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 .
Re: select pobierający grupę główną
: 14 wrz 2010, 10:53
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
Re: select pobierający grupę główną
: 15 wrz 2010, 14:27
autor: marekkuj
Dzięki, bardzo przydatne !
Re: select pobierający grupę główną
: 20 wrz 2010, 11:29
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
Re: select pobierający grupę główną
: 20 wrz 2010, 12:04
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.
Re: select pobierający grupę główną
: 20 wrz 2010, 18:33
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" ??
Re: select pobierający grupę główną
: 20 wrz 2010, 23:40
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.
Re: select pobierający grupę główną
: 17 maja 2016, 14:46
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.
Re: select pobierający grupę główną
: 18 maja 2016, 08:41
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
Re: select pobierający grupę główną
: 28 cze 2016, 14:28
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