Forum Użytkownikow Subiekt GT
InsERT GT => Dodatki - zestawienia - sfera => Wątek zaczęty przez: moro w Sierpień 22, 2017, 21:45:22
-
Jako że ciąglę próbuję ogarnąć pisanie zestawień postanowiłem zainstalować sobie profilera.
Zauważyłem że przy gotowym zestawieniu faktur sprzedaży w polu from profiler wyświetla "vwDok4FSFZGrid"
Czy mógłby mi ktoś napisać co to za tabela? Lub skąd subiekt ją bierze? W dokumentacji bazy danych nie widzę czegoś takiego.
-
To nie tabela tylko widok. W dokumentacji nie ma tego.
-
Ehh... Czyli nie mogę tego zastąpić żadną z tabel?
-
tego sie nie zastepuje, z tego sie korzysta
-
Na Twoim poziomie znajomości SQL przyjmij, że widoki to zwykłe tabele i można je łączyć na tych samych zasadach.
Zazwyczaj opłaca się z nich korzystać, bo odwalają za ciebie pilnowanie poprawności połączeń między tabelami.
-
dzięki.
a czy jest gdzieś zestawienie tych widoków?
-
W Management Studio możesz sobie obejrzeć listing.
-
PRośba ...
przerobiłem trochę zapytanie generowane przez zestawie faktur
SELECT Dok.dok_DataWyst AS "DATA WYSTAWIENIA",
Dok.dok_NrPelny AS "FS",
Adres.adrh_Nazwa AS "Nazwa kontrahenta",
Dok.dok_DoDokNrPelny AS "PA",
Dok.dok_KorNrPelny AS "KFS",
sl_Kategoria.kat_Nazwa AS "KATEGORIA"
FROM vwDok4FSFZGrid AS Dok
LEFT JOIN adr_Historia AS Adres ON Dok.dok_PlatnikAdreshId=Adres.adrh_Id
LEFT JOIN sl_Kategoria ON sl_Kategoria.kat_Id = Dok.dok_KatId
WHERE (dok_Typ = 2 )
ale chciałbym żeby wyświetlało ono jeszcze dokumenty ZW jeżeli zostały wystawione np. do paragonu.
z dodaniem np. kategorii nie miałem problemu bo jest ona pobierana z innej tabeli, ale paragony z tego co widziałem znajdują się w "Dok.dok_DoDokNrPelny" który to już wykorzystuję. Mógłby mnie ktoś nakierować jak to jeszcze przerobić?
Próbowałem coś takiego
SELECT Dok.dok_DataWyst AS "DATA WYSTAWIENIA",
Dok.dok_NrPelny AS "FS",
Adres.adrh_Nazwa AS "Nazwa kontrahenta",
Dok.dok_DoDokNrPelny AS "PA",
Dok.dok_KorNrPelny AS "KFS",
sl_Kategoria.kat_Nazwa AS "KATEGORIA",
vwDok4ZWGrid.dok_NrPelny AS "ZW"
FROM vwDok4FSFZGrid AS Dok, vwDok4ZWGrid AS
LEFT JOIN adr_Historia AS Adres ON Dok.dok_PlatnikAdreshId=Adres.adrh_Id
LEFT JOIN sl_Kategoria ON sl_Kategoria.kat_Id = Dok.dok_KatId
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
WHERE (Dok.dok_Typ = 2 )
ale nie działa i nie wiem czy zmierzam w dobrym kierunku
-
Zdecydowanie w złym kierunku zmierzasz.
Możesz mi wyjaśnić to miałoby to robić:
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
Jaki typ danych znajduje się w dok_NrPelny a jaki w dok_id?
Następne pytanie nakierowujące:
Co to ma na celu:
WHERE (Dok.dok_Typ = 2 )
-
Zdecydowanie w złym kierunku zmierzasz.
Możesz mi wyjaśnić to miałoby to robić:
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
Jaki typ danych znajduje się w dok_NrPelny a jaki w dok_id?
Szukam jakiegoś wspólnego punktu i błądze :/ dlatego tutaj pisze licząc na rade
Widzę błąd.. Ale dok_nrpelny z dok_dodoknrpelny też na działa :/
Co to ma na celu:
WHERE (Dok.dok_Typ = 2 )
Wyswietlanie faktur...
-
Zdecydowanie w złym kierunku zmierzasz.
Możesz mi wyjaśnić to miałoby to robić:
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
Jaki typ danych znajduje się w dok_NrPelny a jaki w dok_id?
Szukam jakiegoś wspólnego punktu i błądze :/ dlatego tutaj pisze licząc na rade
No tutaj było pudło
Co to ma na celu:
WHERE (Dok.dok_Typ = 2 )
Wyswietlanie faktur...
Brawo.
Skoro zestawienie jest zawężone do wyświetlenia faktur to jak może wyświetlić inne dokumenty?
NIe uważasz, że to własnie warunek powinien być rozszerzony o wyświetlanie dokumentów ZW?
Jaki dok_Typ ma ZW?
-
Co to ma na celu:
WHERE (Dok.dok_Typ = 2 )
Wyswietlanie faktur...
Brawo.
Skoro zestawienie jest zawężone do wyświetlenia faktur to jak może wyświetlić inne dokumenty?
NIe uważasz, że to własnie warunek powinien być rozszerzony o wyświetlanie dokumentów ZW?
Jaki dok_Typ ma ZW?
Nie ma mnie teraz przy komputerze i pisze z tel ale czy w takiej sytuacji powinienem dopisać do where
" and vwDok4ZWGrid.dok_Typ = tutaj_numer_dok_typ_dokumentu_zw"?
-
Nie, przecież żaden dokument nie ma dwóch typów, czyli żaden nie spełni warunku
dok_Typ = 2 AND dok_Typ = 14
(ZW ma typ 14)
Musisz szukać dokumentów które mają typ 2 lub 14
-
Nie, przecież żaden dokument nie ma dwóch typów, czyli żaden nie spełni warunku
dok_Typ = 2 AND dok_Typ = 14
(ZW ma typ 14)
Musisz szukać dokumentów które mają typ 2 lub 14
Zrobiłem takie zapytanie i mam teraz
SELECT Dok.dok_DataWyst AS "DATA WYSTAWIENIA",
Dok.dok_NrPelny AS "FS",
Adres.adrh_Nazwa AS "Nazwa kontrahenta",
Dok.dok_DoDokNrPelny AS "PA",
Dok.dok_KorNrPelny AS "KFS",
sl_Kategoria.kat_Nazwa AS "KATEGORIA",
vwDok4ZWGrid.dok_NrPelny AS "ZW"
FROM vwDok4FSFZGrid AS Dok
LEFT JOIN vwDok4ZWGrid AS Par on Par.dok_Id = Dok.dok_DoDokId
LEFT JOIN adr_Historia AS Adres ON Dok.dok_PlatnikAdreshId=Adres.adrh_Id
LEFT JOIN sl_Kategoria ON sl_Kategoria.kat_Id = Dok.dok_KatId
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
WHERE (Dok.dok_Typ = 2 or Par.dok_Typ = 14)
Jak wrzucam do Subiekta to test jest ok ale mam potem przy wykonywaniu "Błąd wykonywania zapytania" a jak robię w HeidiSql to mam komunikat :
Błąd SQL (245): Conversion failed when converting varchar value 'ZW1/MAG/2-17' to data type int.
Chciałbym uzyskać zestawienie z kolumnami:
FS,PA,KFS,ZW, nazwa odbiorcy FS,kategoria dokumentu
Jak z zestawienia usówam wszystkko co dotyczy ZW to zestawienie działa poprawnie.
Jak dołączyć ZW do tego? Jak znaleźć klucz wspólny?
-
Możesz mi wyjaśnić to miałoby to robić:
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_Id
Jaki typ danych znajduje się w dok_NrPelny a jaki w dok_id?
Jak przeczytasz pytanie jeszcze raz i odpowiesz na nie właściwie to będziesz wiedział dlaczego masz błąd.
-
PRzepraszam, to z rozpędu.
SELECT Dok.dok_DataWyst AS "DATA WYSTAWIENIA",
Dok.dok_NrPelny AS "FS",
Adres.adrh_Nazwa AS "Nazwa kontrahenta",
Dok.dok_DoDokNrPelny AS "PA",
Dok.dok_KorNrPelny AS "KFS",
sl_Kategoria.kat_Nazwa AS "KATEGORIA",
vwDok4ZWGrid.dok_NrPelny AS "ZW"
FROM vwDok4FSFZGrid AS Dok
LEFT JOIN vwDok4ZWGrid AS Par on Par.dok_Id = Dok.dok_DoDokId
LEFT JOIN adr_Historia AS Adres ON Dok.dok_PlatnikAdreshId=Adres.adrh_Id
LEFT JOIN sl_Kategoria ON sl_Kategoria.kat_Id = Dok.dok_KatId
LEFT JOIN vwDok4ZWGrid on vwDok4ZWGrid.dok_NrPelny = Dok.dok_DoDokNrPelny
WHERE (Dok.dok_Typ = 2 or Par.dok_Typ = 14)
Mam teraz tak, zapytanie się wykonuje, wszystkie kolumny są ALE w kolumnie ZW jest pusto, tzn nie wpisują się dokumenty ZW.
-
Zrób sobie nową, pustą bazę testową, wpisz 3 dokumenty sam zobacz co masz w tabelach.
-
wszystko działa.