Autor Wątek: Zapytanie do sqla problem  (Przeczytany 2419 razy)

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

Offline peiro

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.53
Zapytanie do sqla problem
« dnia: Luty 14, 2019, 12:08:23 »
Witam może ktoś mi powiedzieć, co nie tak jest z moim zapytaniem ?

,(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId and case(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId) > 0 then 0 end  GROUP BY st_TowId   / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'

wcześniej wyglądało tak i działało

,(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'

natomiast musiałem dodać filtr żeby minusy zamieniało na 0 i użyłem case i tu już nie działa :(

z góry dzięki

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do sqla problem
« Odpowiedź #1 dnia: Luty 14, 2019, 12:22:51 »
Pokaż całość.

Offline peiro

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.53
Odp: Zapytanie do sqla problem
« Odpowiedź #2 dnia: Luty 14, 2019, 12:33:04 »
Proszę:

select
(select SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  / ((select SUM(ob_IloscMag * ob_Znak))  / (DATEDIFF (day,{D: Pokaż dokumenty z przedziału od:},{D: do}))) as 'Zostało na dni'
FROM dok__dokument
INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
INNER JOIN tw__Towar on ob_TowId = tw_Id
left join sl_GrupaTw on tw_IdGrupa = grt_id
WHERE
(
(dok_DataWyst BETWEEN {D: Pokaż dokumenty z przedziału od:} AND {D: do})
AND tw_Id IN ({LM:TW:Filtry Towaru:SELECT tw_id from tw__towar:(wszystkie)})
)
GROUP BY Tw_Symbol, tw_Nazwa, tw_JednMiary, ob_TowId, tw_PodstKodKresk, tw_IdGrupa, grt_Nazwa, tw_CzasDostawy

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do sqla problem
« Odpowiedź #3 dnia: Luty 14, 2019, 12:43:30 »
Wywala mi błąd dzielenia przez zero. Wcześniej mogło działać bo nie trafiło na taki dokument.

Zobacz sobie co to za pozycje na dokumentach masz z zerowymi ilościami masz i np. CASE'm sobie dorób logikę na takie przypadki.
select * from dok_Pozycja where ob_IloscMag=0


Co to ma ogólnie robić bo tu nie ma żadnych warunków na typy dokumentów? I po co te udziwnione SELECTY w SELECT'cie? Takie cuda trudniej się pisze i czyta :)

Offline peiro

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.53
Odp: Zapytanie do sqla problem
« Odpowiedź #4 dnia: Luty 14, 2019, 12:50:46 »
Ten warunek długi wylicza ile towaru pozostaje niejako na zapas ilościowo na dni biorąc pod uwagę sprzedaż na dzień okres i stany. I właśnie tylko chodzi mi o to jak w nim
SUM(st_Stan - st_StanRez) FROM tw_stan WHERE st_TowId = ob_TowId   GROUP BY st_TowId )  ..........................  w tym miejscu ustawić żeby minusy zamieniał na 0.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do sqla problem
« Odpowiedź #5 dnia: Luty 14, 2019, 13:18:53 »
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId

Offline candy

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 4871
  • Reputacja +172/-11
Odp: Zapytanie do sqla problem
« Odpowiedź #6 dnia: Luty 14, 2019, 13:29:14 »
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
To normalny, poprawny warunek na powiązanie nagłówka dokumentu magazynowego z jego pozycjami.
Nie pytaj co rząd może zrobić dla Ciebie. Spytaj czy mógłby tego nie robić.

Offline yemet

  • Zaawansowany użytkownik
  • ****
  • Wiadomości: 1246
  • Reputacja +46/-1
  • Wersja programu: Navireo
Odp: Zapytanie do sqla problem
« Odpowiedź #7 dnia: Luty 14, 2019, 13:32:10 »
A co to jest za warunek cudaczny ?  :o

INNER JOIN dok_Pozycja on dok_Id=ob_DokMagId
To normalny, poprawny warunek na powiązanie nagłówka dokumentu magazynowego z jego pozycjami.

O matko, źle to przeczytałem. Robiłem coś innego po drodze i mi się ubzdurało, że to identyfikator magazynu  ;D

Offline peiro

  • Nowy użytkownik
  • *
  • Wiadomości: 16
  • Reputacja +0/-0
  • Wersja programu: 1.53
Odp: Zapytanie do sqla problem
« Odpowiedź #8 dnia: Luty 14, 2019, 13:33:07 »
winno być INNER JOIN dok_Pozycja ON dok_Id = ob_DokHanId
« Ostatnia zmiana: Luty 14, 2019, 14:26:42 wysłana przez peiro »

Forum Użytkownikow Subiekt GT

Odp: Zapytanie do sqla problem
« Odpowiedź #8 dnia: Luty 14, 2019, 13:33:07 »