Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: Omenus78 w Marzec 30, 2018, 11:05:55
-
Witam
Mam zestawienie / do rozliczenia pośrednika/ ale niektóre faktury wyświetla i liczy podwójnie. Nie mam pojecia dlaczego??
Pomoże ktoś??
Proszę
SELECT
kh_Symbol AS Symbol,
nz__Finanse.nzf_Data AS [Data powstania],
dok__Dokument.dok_NrPelny AS [Dokument],
dok_WartNetto AS [Netto],
adr__Ewid.adr_Nazwa AS [Nazwa],
dok_Uwagi as Uwagi,
kh_Pole1 as [Sprzedawca]
FROM
kh__Kontrahent,
nz__Finanse,
dok__Dokument,
adr__Ewid,
sl_CechaKh,
kh_cechaKh
WHERE
(dok__Dokument.dok_Typ IN({CHL:faktura sprzedaży#2#korekta faktury sprzedaży#6#:Typ dokumentu}))
and adr__Ewid.adr_IdObiektu=kh__Kontrahent.kh_Id
and nz__Finanse.nzf_IdDokumentAuto=dok__Dokument.dok_Id
and adr__Ewid.adr_Id=nz__Finanse.nzf_IdAdresu
and kh__Kontrahent.kh_Id=kh_CechaKh.ck_IdKhnt
and kh_CechaKh.ck_IdCecha=sl_CechaKh.ckh_Id
and dok_DataWyst BETWEEN {DR: Data :2018-01-01 : 2018-01-31}
and kh_CechaKh.ck_IdCecha={DB: SELECT ckh_Id, ckh_Nazwa AS CECHA FROM sl_CechaKh ORDER BY Cecha: Dla cechy}
Z góry dziękuję za wszelkie sugestie.
A tak wogóle to : WESOŁYCH Swiąt i mokrego dyngusa ;-)
-
Mam zestawienie / do rozliczenia pośrednika/ ale niektóre faktury wyświetla i liczy podwójnie. Nie mam pojecia dlaczego??
Przez ten fragment
FROM
kh__Kontrahent,
nz__Finanse,
dok__Dokument,
adr__Ewid,
sl_CechaKh,
kh_cechaKh
Bierzesz dane z 6 tabel, w każdej z nich są potrzebne i niepotrzebne i ani słowem się nie zająknąłeś co ma te tabele łączyć
Bez tego to zapytanie nie ma żadnego sensu.
Wpisz w google "łączenie tabel sql" i przeczytaj cośkolwiek
-
Dzięki. Zasiadam do wujka google i szukam.
Proszę nadawać tytuły zgodnie z tematem pytania
-
Niestety nie poradziłem sobie. Niby wylicza ale dla niektórych kontrahentów pokazuje mi 2 razy faktury ale nie wszystkie- dlaczego ?
Np.kontrahent ma 10 faktur a pokazuje mi 5 z nich razy 2 choć liczy raz.
Pomoże ktoś?
-
Nie wiem co jest źle bo nie pokazałeś co aktualnie zrobiłeś i w jaki sposób. Z tego co masz powyżej to
Masz tabele kh__kontrahent i adr__ewid powiązane za pomocą adr__Ewid.adr_IdObiektu=kh__Kontrahent.kh_Id
Zobacz co się stanie jak połączysz tylko te dwie tabele - ile razy występuje ten sam kontrahent?
Zwróć uwagę na pole adr_typadresu - do czego ono służy?
Masz też powiązanie z kh_cechaKh za pomocą kh__Kontrahent.kh_Id=kh_CechaKh.ck_IdKhnt ...
Co się stanie jak kontrahent będzie miał dwie cechy, a co jeżeli nie będzie miał wcale cechy
Zacznij od jednej tabeli i później dołączaj kolejne tabele sprawdzając co jest w wyniku. Np zacznij od dok__dokument z filtrem daty i typu dokumentu a następni dołączaj kolejne tabele. To nie może być tak, że wrzucasz bezmyślnie różne tabele - zrób to powoli, ale tak abyś wiedział co robisz. Korzystaj też z różnych połączeń JOIN, bo łączenie za pomocą "=" po WHERE jest jednoznaczne z INNER JOIN, a nie zawsze jest to odpowiednie. Poczytaj co najmniej o LEFT JOIN.
Załóż sobie pusty podmiot testowy (bez danych przykładowych) załóż jednego klienta, jeden towar, dodaj jeden dokument i wtedy testuj.
-
Masz rację, tylko niech raczej założy 2 kontrahentów i wystawi jednemu dwa dokumenty, a drugiemu jeden.
Bo jak będzie miał po jednym wszystkiego to wyjdzie piękne zestawienie, które w ogóle nie będzie działać w realu tak jak to.
-
Niestety nie poradzę sobie, musze to zrobić "na piechotę" :'(
-
Dzięki za pomoc.
-
ZROBIŁEM!! Wielkiedzieki za zmuszenie mnie do myślenia . CANDY dziękuje za link do kursu sql to dzieki niemu dałem radę. ;D
-
ZROBIŁEM!! Wielkiedzieki za zmuszenie mnie do myślenia . CANDY dziękuje za link do kursu sql to dzieki niemu dałem radę. ;D
I to lubię!
Żadnego jęczenia i fochów, tylko chwila pracy i sukces.
Gratuluję!
-
Jak nikt nie słyszał to trochę jeczałem 8) Ale jeszcze raz dzięki.
-
Jak nikt nie słyszał to trochę jeczałem 8) Ale jeszcze raz dzięki.
Bo jęczenie do siebie jest słuszne i zalecane, pomaga rozładować stres i oczyszcza rozum ;)