Autor Wątek: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie  (Przeczytany 329 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline lkosc

  • Nowy użytkownik
  • *
  • Wiadomości: 30
  • Reputacja +1/-0
    • Zobacz profil
  • Wersja programu: 1,26
Witam, probuje wykonać zestawienie pokazujące pary dokumentów FS i AutoWZ które posiadają rozne kategorie ale cos mi nie działa.....

narazie mam cos takiego
SELECT
dok__Dokument.dok_NrPelny,
dok__Dokument.dok_Typ,
dok_Dokumnet.dok_KatId
FROM dok__Dokument
LEFT JOIN dok__Dokument as Data
ON dok__Dokument.dok_Id = Data.dok_DoDokId

WHERE
dok_Dokument.dok_KatId != Data.dok_KatId

i wywala bląd
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "dok_Dokument.dok_KatId" could not be bound.
lub (gdy usuwam dok__Dokument
Msg 209, Level 16, State 1, Line 4
Ambiguous column name 'dok_KatId'.

Nie jestem pewien czy poprawnie odwoluje sie do tej samej tabel...

Forum Użytkownikow Subiekt GT


Offline dkozlowski

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 679
  • Reputacja +73/-1
    • Zobacz profil
  • Wersja programu: Najnowsza
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #1 dnia: Luty 06, 2012, 14:57:18 »
Nie ma takiej tabeli jak "dok_Dokumnet", jest "dok__Dokument" - dwa podkreślenia i "en" zamiast "ne". Polecam bazę 2008 i SSMS 2008 gdzie można korzystać z IntelliSense - łatwiej się pisze i popełnia mniej błędów. Ponadto aby nie było niepewności i krótsze odwołania przy łączeniu tych samych tabel, to polecam stosować aliasy dla wszystkich tabel i to takie które coś mówią (a nie na przykład A, B, C, D). Po małym szlifie zapytanie w załączniku.

SELECT FS.dok_Typ, FS.dok_Podtyp, FS.dok_NrPelny, FS.dok_KatId, katFS.kat_Nazwa,
WZ.dok_Typ, WZ.dok_Podtyp, WZ.dok_NrPelny, WZ.dok_KatId, katFS.kat_Nazwa
FROM dok__Dokument FS
JOIN dok__Dokument WZ on FS.dok_Id = WZ.dok_DoDokId
left join sl_Kategoria katFS on FS.dok_KatId = katFS.kat_Id
left join sl_Kategoria katWZ on WZ.dok_KatId = katWZ.kat_Id
WHERE FS.dok_KatId <> WZ.dok_KatId
and FS.dok_Typ = 2
« Ostatnia zmiana: Luty 06, 2012, 16:55:04 wysłana przez dkozlowski »
Zanim zapytasz wciśnij "F1", to nie boli a często pomaga

Offline lkosc

  • Nowy użytkownik
  • *
  • Wiadomości: 30
  • Reputacja +1/-0
    • Zobacz profil
  • Wersja programu: 1,26
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #2 dnia: Luty 07, 2012, 09:55:43 »
uruchamia sie i pokazuje dane...

ale zawsze kategorie sie zgadzaja a watpie ze tak jest w rzeczywistosci...
a 2 to pokazuje kategorie do wszystkich a nie tylko te co sie roznia ale to juz solidna podstawa do dalszych prac....


Dziekuje...

EDIT: po edycji dziala juz jak chce dodalem filtr daty

SELECT FS.dok_NrPelny as [ Numer FV], katFS.kat_Nazwa as [Kategoria FV],
WZ.dok_NrPelny as [Numer WZ], katWZ.kat_Nazwa as [Kategoria WZ]
FROM dok__Dokument FS
JOIN dok__Dokument WZ on FS.dok_Id = WZ.dok_DoDokId
left join sl_Kategoria katFS on FS.dok_KatId = katFS.kat_Id
left join sl_Kategoria katWZ on WZ.dok_KatId = katWZ.kat_Id
WHERE FS.dok_KatId <> WZ.dok_KatId
and FS.dok_Typ = 2
and (FS.dok_DataWyst BETWEEN {D:Data dokumentu od:} AND {D:do} )

i teraz smiga az milo....
« Ostatnia zmiana: Luty 07, 2012, 10:03:38 wysłana przez lkosc »

Offline dkozlowski

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 679
  • Reputacja +73/-1
    • Zobacz profil
  • Wersja programu: Najnowsza
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #3 dnia: Luty 07, 2012, 11:25:06 »
No rzeczywiście, dwa razy wyświetlałem "katFS.kat_Nazwa " - najpierw patrzyłem na Id kategorii i jak dopisałem nazwy to już nie sprawdziłem dokładnie (Ctrl+C, Ctrl+V tak się często kończy).
Zanim zapytasz wciśnij "F1", to nie boli a często pomaga

Offline lkosc

  • Nowy użytkownik
  • *
  • Wiadomości: 30
  • Reputacja +1/-0
    • Zobacz profil
  • Wersja programu: 1,26
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #4 dnia: Luty 07, 2012, 11:56:33 »
Co nie zmienia faktu ze i tak bardzo przyblizyles mnie do problemu i teraz kolejny... aby updatowac teraz te komorki... nie smiga mi cos takiego ( pomijam ze w zestawieniach nie moge uzywac UPDATE) wiec jade z managera
UPDATE dok__Dokument
SET dok__Dokument.dok_KatId = (SELECT FS.dok_KatId
FROM dok__Dokument FS
INNER JOIN dok__Dokument WZ on FS.dok_Id = WZ.dok_DoDokId
WHERE FS.dok_KatId <> WZ.dok_KatId
and FS.dok_Typ = 2
and (FS.dok_DataWyst BETWEEN '01/01/2012 00:00:00' AND '01/01/2013 00:00:00' ))
WHERE dok_Typ = 11

wywala mi ze subquery zwraca wiecej niz jeden rekord....
jak zrobie SET dok__Dokument.dok_KatId =FS.dok_KatId FROM... to wywala ze dok__Dokument ambigous lub błąd przy WHERE (gdy uzywam 2 wherów) bo chce tylko update dla dokumentów WZ

Offline dkozlowski

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 679
  • Reputacja +73/-1
    • Zobacz profil
  • Wersja programu: Najnowsza
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #5 dnia: Luty 07, 2012, 12:28:42 »
Można uzywać update w zestawieniach SQL :) SQL nie kłamie i mówi w czym problem - nie można przypisywać kilku wartości pod jedną. Polecam poczytać o składni polecania update w mssql, jest ono dość mocno rozbudowane.

Propozycja zestawienia SQL:

Cytuj
select 'Można używać update w zestawieniach SQL' Operacja

update dok__Dokument
set dok_KatId = FS.dok_KatId
from dok__Dokument
join dok__Dokument FS on FS.dok_Id = dok__Dokument.dok_DoDokId
WHERE FS.dok_KatId <> dok__Dokument.dok_KatId
and FS.dok_Typ = 2 -- and dok__Dokument.dok_Typ = 11
--and (FS.dok_DataWyst BETWEEN '01/01/2012 00:00:00' AND '01/01/2013 00:00:00' )
and (FS.dok_DataWyst BETWEEN {D:Data dokumentu od:} AND {D:do} )

Zakładam, że wszystko testujesz na kopii bazy danych ! ? !
Zanim zapytasz wciśnij "F1", to nie boli a często pomaga

Offline lkosc

  • Nowy użytkownik
  • *
  • Wiadomości: 30
  • Reputacja +1/-0
    • Zobacz profil
  • Wersja programu: 1,26
Odp: Porównanie dokumentów WZ i FS czy mają zgodne Kategorie
« Odpowiedź #6 dnia: Luty 15, 2012, 15:47:43 »
wysmienicie - dziekuje....

a niezaplacone naleznosci kontrahentow (fv i wartosc) z filtrami na opiekuna, rejon - lub cos pobobnego od windykacji? za to znalazlbym jakies srodki jesli temat ciezszy