Marcinie,
Fakt,
już od pewnego czasu zastanawiam się nad jednym zestawem tabel i przykładowych
danych by następnie na tychże prezentować ciekawostki. Tak mają kursy… Ja na
blogu nie realizuję co prawda kursu, ale nieco marzy mi się taka sytuacja,
takie środowisko, ale go nie mam… To jeszcze przede mną…
Dlatego
nadal po staremu, a więc nowy przykład, nowe tabele. Sytuacja jest następująca:
- firma handlowa sprzedaje czterem kontrahentom towary, numery kontrahentów od 1 do 4, dane o nazwie i województwie w tabeli KLIENCI,
- firma sprzedaje z odroczonym terminem płatności, to jest udziela kredytu kupieckiego,
- każdemu kontrahentowi firma określa limit kredytu kupieckiego, jest on zmienny w czasie,
- firma co miesiąc rejestruje w tabelce saldo, zadłużenie danego kontrahenta oraz jego limit kredytu kupieckiego,
- dane, o których mowa w punktach 2, 3 i 4 są zebrane w tabelce SALDA, mamy zdane za 4 lata, identyfikator klienta umożliwiający powiązanie z tabelą KLIENCI, limit i saldo... tu to jest.
Problem: czy, a jeżeli odpowiedź brzmi tak,
to ile razy, kiedy, o ile kwotowo i procentowo zostały przekroczone w badanych
czterech latach przyznane limity kredytu kupieckiego.
By
to zrobić szybko i sprawnie, to trzeba przejrzeć tabelkę SALDA i by nie robić
tego osobno dla każdego kontrahenta od razu warto znaleźć pary danych: id
kontrahenta oraz czas, gdy dla danego kontrahenta wystąpiło przekroczenie
limitu, czyli:
(ID, DATA_STANU) IN (SELECT ID,
DATA_STANU FROM SALDA WHERE SALDO/LIMIT>1)
Wynikiem
zapytania po lewej będzie zbiór par danych, gdy było przekroczenie limitu - o
tym decyduje fakt, iż relacja salda do
limitu jest powyżej 1.
To
co mamy po prawej, to konieczny element, by napisać kompletny warunek –
interesują nas pary danych co są w zbiorze par danych wygenerowanych przez
zapytanie po lewej, tak to czytać trzeba J
No
to mamy warunek, który użyjemy po WHERE. Właśnie po WHERE podamy, to co wyżej
napisałem i to będzie wykonane w pierwszej kolejności, to jest właśnie podzapytanie proste.
Kiedy
już wiemy kiedy, w zależności od kontrahenta, nastąpiło przekroczenie limitu
możemy się „pobawić” i ustalić co chcemy zobaczyć finalnie „na ekranie”.
Nazwa
kontrahenta, województwo jest w osobnej tabeli, dlatego będziemy sięgać do
dwóch tabel, obu nadamy aliasy i je powiążemy. To pierwsza rzecz, która
przychodzi do głowy przed skonstruowaniem co wyświetlimy, czyli:
FROM Salda s, Klienci k WHERE s.ID=k.KLIENT_ID
Od
końca piszemy kwerendę, ale tak do niej po kolei dochodzimy. Jeżeli wiemy skąd,
jaki warunek mają spełniać dane to już
wszystko. Wyświetlamy pożądane informacje i koniec.
I
przy okazji uczymy się co to jest konkatenacja, to dodanie dwóch tekstów czymś
takim ||
Tradycyjnie:
Reszta
na obrazku.
W.
Brak komentarzy:
Prześlij komentarz