Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Paweł Em w Styczeń 10, 2021, 15:49:40
-
Witam wszystkich forumowiczów.
Jestem nowym użytkownikiem.
Próbuje zautomatyzować sobie proces przenoszenia wszystkich towarów do excela, z jakiegoś anglojęzycznego forum skopiowałem makro które działa, pozostaje tylko napisać prawidłowe połącznie tabel w sql. Jednak napotykam na problem ponieważ indeksy wyświetlają potrojone(tzn. każdy jest razy 3 ) gdzieś tam wyczytałem,że muszę przed select wstawić distinct.
Jednak teraz jeżeli towar jest na stanie to wtedy indeks się dubluje.
Screeny w załączniku.
Prosiłbym o pomoc/naakierowanie na rozwiązanie:)
Łącze tabele Towar Stan Cena
Select distinct t.[tw_IdGrupa], t.[tw_Symbol] , t.[tw_Nazwa], s.st_Stan, t.[tw_JednMiary], c.[tc_CenaNetto7], c.[tc_CenaBrutto7]
from [dbo].[tw__Towar] as t
join tw_Cena as c ON t.tw_Id = c.tc_Id
join tw_Stan as s ON t.tw_Id = s.st_TowId where tw_Rodzaj = 8 AND tw_IdGrupa=1 OR tw_IdGrupa=11 OR tw_IdGrupa=6 OR tw_IdGrupa=4
-
1.Jeżeli masz więcej niż jeden magazyn to w tabeli tw_stan każdy towar jest tyle razy ile masz magazynów. Dodaj warunek określający magazyn, którego stan Ciebie interesuje lub podaj odpowiednio zsumowany stan.
2. tw_Rodzaj = 8
(1 - towar; 2 - usługa; 4 - opakowanie; 8 - komplet; 16 - opłata)
3. Przy łączeniu różnych operatorów logicznych musisz zadbać o nawiasy
WHERE tw_Rodzaj = 8 AND tw_IdGrupa=1 OR tw_IdGrupa=11 OR tw_IdGrupa=6 OR tw_IdGrupa=4
oznacza, że chcesz wybrać komplety z grupy 1 lub inny asortyment z grup (11,6,4) niezależnie od rodzaju tego asortymentu.
Może chciałeś raczej napisać:
WHERE tw_Rodzaj = 8 AND (tw_IdGrupa=1 OR tw_IdGrupa=11 OR tw_IdGrupa=6 OR tw_IdGrupa=4)
albo ładniej
WHERE tw_Rodzaj = 8 AND tw_IdGrupa IN(1,11,6,4)
4. Używanie DISTINCT w tym przypadku jest błędem - trzeba poprawnie napisać zapytanie.
-
Dziękuje działa