MS Access, kwerendy

0

Dzień dobry.

Jak do tej pory radziłem sobie z odpowiedziami na moje problemy w historycznych postach na tym forum, ale tym razem zderzyłem się ze ścianą. Trzeba było założyć konto i zadać następującą zagadkę.

Posiadam dwa źródła danych. Tabelę i kwerendę.

tb_regał jest słownikiem definiującym zawartość stojaka i zawiera następujące dane:
nazwa produktu; ilość
mydło; 5
powidło; 3

kw_1 wyświetla sprzedane przez handlowca produkty i są tam takie pozycje:
nazwa produktu; ilość
mydło; 1
powidło; 1
regał; 1

To co chcę utworzyć to kwerenda wyrzucające następujące dane:

kw_2
mydło; 6
powidło; 4

Napisałem to jak najbardziej obrazowo się dało, a teraz troche wyjaśnienia. Mój system sprzedażowy który eksportuje dane do accessa wyświetla sprzedaż handlowców jako SKU i sprzedana ilość. ALE, czasem handlowcy sprzedają zatowarowane stojaki które składają sie z różnych SKU, one są raportowane jako zestaw i system wyrzuca w efekcie ilość "1" a tymczasem faktyczna ilość sprzedanych SKU to produkty luzem + to co na stojaku. Moim celem jest wygenerowanie sprzedaży faktycznej ilości SKU's korzystając ze słownika który definiuje zawartość regału.
Da się tak?

0

Chyba zbyt uogulniłeś, jak rozumiem za regał chcesz podstawić dane z tabeli tw_regał, tylko skąd wiesz, że to akurat za regał?

0
Panczo napisał(a):

Chyba zbyt uogulniłeś, jak rozumiem za regał chcesz podstawić dane z tabeli tw_regał, tylko skąd wiesz, że to akurat za regał?

Hmm.. no bo w kw_1 jest pozycja która mówi że to regał.
Jeżeli kw_2 widzi taką linijkę to powinna pobrać dane z tb_regał z jego składnikami.

TR

1

no to tak:

select
   nazwa_produktu
   ,ilosc*il as i
from
    (select ilosc as il from kw_1 where nazwa_produktu='regał') as r,
    tb_regal
union all
select
    nazwa_produktu
    ,ilosc
from
    kw_1
where
    nazwa_produktu <> 'regał'

http://sqlfiddle.com/#!18/54bb1/4

albo tak tylko nie wiem czy to przejdzie w access:

select
     nz(r.nazwa_produktu,p.nazwa_produktu) as produkt
     ,nz(r.ilosc,1)*p.ilosc as i
from
   kw_1 as p
   left join tb_regal r on p.nazwa_produktu = 'regał'

Zwróć uwagę że w poscie użyłem nz zamiast isnull
http://sqlfiddle.com/#!18/54bb1/7

0

Super! Działa. Dziękuję bardzo za pomoc.

T

1 użytkowników online, w tym zalogowanych: 0, gości: 1