Złączenie tabel, iloczyn kartezjański… dodanie stanów zerowych do tabeli


Złączenie polegające na iloczynie kartezjańskim znam Marcinie od samego początku, gdy tylko usłyszałem o złączeniach tabel. De facto iloczyn kartezjański oznacza brak wskazania warunku złączenia, zatem łączenie dwóch tabel w ten sposób powoduje wygenerowanie znacznej liczby rekordów, dla każdego możliwego złączenia wartości z tabeli A z wartością z tabeli B.
Na przykład wyobraź sobie: tabela IMIONA to wykaz 5 imion (tylko jedno pole), tabela NAZWISKA to wykaz 10 nazwisk (tylko jedno) pole to: 
Select * from IMONA, NAZWISKA; 
Wygeneruje zestaw par: imię plus nazwisko, 50 takich par będzie.  Jak potrzebujemy dużej liczby danych, to jest to podstawowe  zastosowanie tego typu złączenia wskazane w literaturze. 

Tu pod linką masz kwerendę tworzącą ww. tabele, przykładowe dane i  możesz zobaczyć przykładowe 50 par imion z nazwiskami.
  
Marcinie, nie ma co ukrywać, iż złączenia -> iloczynu kartezjańskiego dotychczas nie używałem, aż… odkryłem, iż w ten sposób, przy jego pomocy mogę uzupełnić brakujące stany (najczęściej zerowe) w tabelach, które mają daty i salda, ale nie mają dat i sald jeszcze nieistniejących oraz już nieistniejących. 
Tu powrócę to problemu, zadania już przeze mnie raz opisanego w poście:




W sumie po to go wyprodukowałem ten post, by też móc do niego sięgać. Tym razem w celu rozwiązania zadania generuję kompletny wykaz par danych: data stanu i kontrakt.  Do tak utworzonego wykazu dociągam łącząc po dacie stanu (z plusikiem) i po numerze kontraktu (z plusikiem) rzeczywiste salda, ale w przypadku braku salda w danej dacie, dla danego kontraktu wstawiam zero korzystając z funkcji NVL.
Tu też zastosuję nową technikę, utworzyłem na wykorzystując tabelę ROZLICZENIA i zgodnie z powyższym WIDOK, do którego sięgam by obliczyć salda. I mam zmianę sald pomiędzy stanem na koniec 2012 a stanem na koniec 2010, spłaty, bez kombinowania, bez uważania na feler „brak rozliczonych kontraktów w danej dacie”. Bo WIDOK nie ma feleru braku sald zerowych, WIDOK ma nie tylko salda zerowe już rozliczonych kontraktów, ale ma też salda zerowe dla kontraktów jeszcze niezawartych :-)


Tutaj kwerendy, rozwiązanie, przy czym jeżeli jesteś stałym czytelnikiem (mam nadzieję) to tabelkę ROZLICZENIA wraz z danymi możesz już mieć. Zacznij wówczas analizę od KROKU 3.

Dodatkowo zamieszczam obraz dokładnie ilustrujący etapy rozwiązania, naprawdę się starałem i warto go zobaczyć, jeden z lepszych jakie tu zamieszczam na blogu :-)

 

W. 

Brak komentarzy:

Prześlij komentarz