Autor Wątek: Zestawienie sql  (Przeczytany 3746 razy)

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

Offline kombit

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Najnowsza
Zestawienie sql
« dnia: Czerwiec 16, 2017, 14:14:14 »
Witam,

Subiekt Gt ma zestawienie, które pokazuje ilość towaru poniżej stanu minimalnego. Potrzebuje podobne tylko że dla stanów optymalnych tzn zakładamy że stan min towaru to 6 szt. a stan optymalny to np. 9 czyli 150% minimalnego.
Zrobiłem taki filtr w formatowaniu warunkowym że podświetla mi dane towary na kolor. Niestety minus tego rozwiązania jest taki że przy dużej ilości towarów ciężko te towary wyłapać bez wydruku.

Zrobiłem coś takiego, ale nie za bardzo poprawnie liczy.
Drugi kłopot to taki, że pokaże to także towary poniżej stanu minimalnego a tego też w tym zestawieniu nie potrzebujemy

select tw__Towar.tw_Nazwa as nazwa, tw_Stan.st_Stan as ilość
from dbo.tw__Towar  JOIN dbo.tw_Stan on tw_stan.st_Stan<2*tw_Stan.st_Stanmin and tw_stan.st_TowId =tw__Towar.tw_Id

Z góry dzięki za sugestie i pomoc.

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4919
  • Reputacja +173/-11
Zestawienie sql
« Odpowiedź #1 dnia: Czerwiec 16, 2017, 15:16:41 »
Napisz najpierw co naprawdę chcesz odfiltrować.
Towary poniżej stanu optymalnego, ale powyżej minimalnego?
Towary powyżej optymalnego?
Towary o stanie optymalnym (z jaką dokładnością)?

W tym zestawieniu pominąłeś magazyny. Dla jednego będzie OK, ale przy 2 lub więcej już nie.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline birds22

  • Ekspert
  • *****
  • Wiadomości: 9237
  • Reputacja +1306/-21
  • Wersja programu: Najnowsza
Odp: Zestawienie sql
« Odpowiedź #2 dnia: Czerwiec 16, 2017, 15:21:06 »
No i jeszcze zobacz co jest zapisywane do kolumny st_StanMin w tabeli tw_Stan.
Sławek, Zduńska Wola

Offline pir

  • Aktywny użytkownik
  • ***
  • Wiadomości: 303
  • Reputacja +14/-0
  • Wersja programu: zazwyczaj aktualna chyba że czekam na jakąś poprawkę
Odp: Zestawienie sql
« Odpowiedź #3 dnia: Czerwiec 16, 2017, 15:23:55 »
2*stanmin daje 200%, a nie 150%.
Potrzebujesz jeszcze dodatkowego "and  stan>stanmin" by zadziałała reguła "stanmin<x<150%*stanmin".

Offline kombit

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Najnowsza
Odp: Zestawienie sql
« Odpowiedź #4 dnia: Czerwiec 16, 2017, 15:58:36 »
Przeliczniki 100 czy 200 % nie robią różnicy bo to określę później. Konkretnie chodzi o:
Towary poniżej stanu optymalnego, ale powyżej minimalnego.Magazyn tylko 1 główny.
Dodałem stan>stanmin ale nadal nic nie liczy. Jeśli ustawię stan>2*stanmin to są jakieś wyniki (na szybko nie sprawdzałem jeszcze co tak naprawdę filtruje.) jeśli zostawię tak jak w 1 poście czyli stan<2*stanmin nie znajduje żadnych rozwiązań a w kartotece mam towar  testowy którego stan=7, stan min 4 czyli stan jest mniejszy niż 2*stan minimalny

Edit:
Sorki za spam. zobaczę wieczorem w domu bo chyba mam coś nie tak z bazą więc może ten zapis będzie ok.
« Ostatnia zmiana: Czerwiec 16, 2017, 16:05:40 wysłana przez kombit »

Offline kombit

  • Nowy użytkownik
  • *
  • Wiadomości: 19
  • Reputacja +0/-0
  • Wersja programu: Najnowsza
Odp: Zestawienie sql
« Odpowiedź #5 dnia: Czerwiec 16, 2017, 21:02:05 »
No i jeszcze zobacz co jest zapisywane do kolumny st_StanMin w tabeli tw_Stan.

I tu był problem. Dzięki za naprowadzenie. Swoją drogą nie rozumiem dlaczego stan minimalny nie jest wpisany do kolumny st_StanMin w tabeli tw_Stan.  Okazało się że wpisany jest w głównej tabeli tw__Towar w kolumnie tw_StanMin. Wie ktoś skąd ta rozbieżność i czym to jest spowodowane?

Offline Biniew

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4095
  • Reputacja +275/-17
  • Wersja programu: GT i Nexo
Odp: Zestawienie sql
« Odpowiedź #6 dnia: Czerwiec 16, 2017, 21:05:36 »
Tabela tw_Stan (powrót do spisu treści)

Stany magazynowe towarów

L.p. Nazwa Opis Typ
1 st_TowId Identyfikator towaru (występuje dla każdego obiektu z tabeli tw__Towar) int
2 st_MagId Identyfikator magazynu int
3 st_Stan Ilość towaru (ob_TowId) na danym magazynie (ob_MagId). money
4 st_StanMin Minimalna ilość towaru (ob_TowId) na magazynie (ob_MagId). Jej przekroczenie (ob_Stan<ob_StanMin) powinno generować specjalny zapis w innej tabeli. money
5 st_StanRez Stan rezerwacji towaru (ob_TowId) na danym magazynie (ob_MagId).  money
6 st_StanMax Stan maksymalny jaki może być w magazynie money
Założenia:
1 FK_tw_Stan_sl_Magazyn st_MagId->PK_sl_Magazyn FOREIGN KEY
2 FK_tw_Stan_tw__Towar st_TowId->PK_tw__Towar FOREIGN KEY
3 *PK_tw_Stan st_TowId; st_MagId

Odp: Zestawienie sql
« Odpowiedź #6 dnia: Czerwiec 16, 2017, 21:05:36 »