select pobierający grupę główną
Moderator: mikey
select pobierający grupę główną
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 .
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ą
Możesz wykorzystać funkcje TwrGrupaPelnaNazwa np
Funkcja zwróci całą ścieżkę grupy
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
Re: select pobierający grupę główną
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ą
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:
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_GIDTypXL 9.6 HF1 - nic tylko się pociąć...
Re: select pobierający grupę główną
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.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
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.
-
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ą
Nieprawda drogi Panie. Nie najniższą grupę - tylko pełną ścieżkę GRUPY DOMYŚLNEJ towaru.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.
Że co ??Czyli to samo co łącząc twrkarty + 2 x twrgrupy = najbardziej powierzchowne wiązanie do grupy towarowej.
Mea culpa. Bardzo dziękuję.Edit: poprawiłem jeszcze kod twg = tgd dla twrgrupydom.
A tak poza tym... Co "poeta" ma na myśli mówiąc "GRUPA GŁÓWNA" ??
XL 9.6 HF1 - nic tylko się pociąć...
Re: select pobierający grupę główną
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ą
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.
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ą
Tutaj masz funkcję, która ci zwróci nazwę grupy głównej:
A tutaj masz przykładowe wywołanie:
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
Kod: Zaznacz cały
SELECT CDN.TwrGrupaGlownaNazwa(TwG_GrONumer)
FROM CDN.TwrGrupy
WHERE TwG_GIDNumer = 23082 AND TwG_GIDTyp = 16
Pozdrawiam
Wojtek Cyrklewicz
Wojtek Cyrklewicz
- czesiomisio
- Posty: 14
- Rejestracja: 15 cze 2015, 15:09
- Rola: Użytkownik CDN XL
- Wersja: 2016
Re: select pobierający grupę główną
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