Skocz do zawartości

Sello 1.17.2 problem z aukcjami 30 dni w zakładce przygotowane

Polecane posty

Problem 30 dniowych aukcji występuje także w zakładce przygotowane.

Niestety podany skrypt SQL nie działa w przypadku aukcji przygotowanych.

Zmiana zbiorcza aukcji też podaje błąd Nieokreślony Błąd Należy podać czas trwania aukcji.

Bardzo proszę o pomoc zmiana ponad 4800 w zakładce przygotowane będzie bardzo czasochłonna.

Link to postu

Skrypt dla aukcji przygotowanych będzie wyglądał tak:

 

update au__auction set au_durationId = 
(select sd_id from st_Duration where sd_SvcProvId = 1 and sd_SiteId = 1 and sd_name = '30' and sd_Expired = 0) 
where au_Type = 10 and au_DurationId is null and au_State in (0,1)

 

Skrypt ustawia w aukcjach przygotowanych niegotowych i gotowych do wystawienia czas trwania 30 dni, jeśli nie było żadnego czasu ustawionego.

Przed wykonaniem skryptu zalecamy wykonanie kopii zapasowej bazy (archiwizacji).

 

Instrukcja jak wykonać skrypt znajduje się w tym wątku: https://forum.sello.pl/index.php?topic=7634.msg48608#new

Link to postu

To już zależy od tego czy towary są powiązane z Subiektem czy nie - bo wtedy inaczej wyliczana jest liczba dostępnych sztuk. Poniżej przykład dla towarów powiązanych z Subiektem.

 

Nie mogę jednak dać gwarancji na te polecenia, bo nie zostały one należycie przetestowane, jedynie sprawdzone na kilku przykładach.

 

update au__Auction set au_Quantity = (select it_stock - it_Reserved from it__item
where it_Id = au_ProductId)
where au_Type = 10 and au_State in (0,1) and au_ProductId is not null

Link to postu

Bartku zauważyłem w zapytaniu błąd ponieważ w sello nie można wstawić ilości 0 w aukcjach przygotowanych, a skrypt taką wartość zwraca jak stan towaru jest 0.

Ja poradziłem sobie w łopatologiczny sposób :).

 

update au__Auction set au_Quantity = (select it_stock from it__item
where it_Id = au_ProductId)
where au_Type = 10 and au_State in (0,1) and au_ProductId is not null

update au__Auction set au_Quantity = 1
where au_Quantity <=0 and au_Type = 10 and au_State in (0,1)

 

Jednak wiem że to nie jest najlepsza opcja. Bo bez sensu jest przypisywać wartości mniejsze od zera a potem je zmieniać.

Więc nasuwa mi się pytanie jak to zrobić bez wstawiania tej wartości mniejszej od zera?

 

np jeśli ta część
(select it_stock from it__item where it_Id = au_ProductId)
zwraca wartość <= 0
to można ustawić au_Quantity = 1

 

Niestety nie wiem jak to zrobić w sql.

Może coś podpowiesz?

 

 

 

Link to postu

Bez sprawdzania widzę że będzie dobrze :).

Mam jeszcze jeden pomysł który będę mógł wykorzystać do innych zapytań.

Powiedz czy można zrobić coś takiego?

 jeśli select it_stock from it__item where it_Id = au_ProductId > 0
 to 
 update au_Auction set au_Quantity = (select it_stock from it__item
 where it_Id = au_ProductId)
 where au_Type = 10 and au_State in (0,1) and au_ProductId is not null

 else
 nie zmieniam wartości au_Quantity

 

Teraz tak myślę czy da się potraktować każdy rekord tabeli au_Auction z osobna

i jeśli towar powiązany z nią ma wartość it_stock > 0

to wtedy ustawiam au_Quantity

jeśli będzie mniejsze bądź równe zeru zostawiam bez zmian

 

Jest to możliwe, w samym sql?

Czy może da się to zrobić w jakiś inny sposób?

 

 

 

 

 

Link to postu

Tylko zastanawiam się jaki to ma cel? Żeby określić czy towar jest na aukcji użyty i tak trzeba zrobić select po aukcjach. Jeśli byś chciał zaktualizować tylko te aukcje, które mają liczbę dostępnych sztuk większą od 1 to można dopisać warunek w where zwracający np identyfikatory aukcji, dla których towar jest niezerowy. Ale to kolejny select w zapytaniu a i tak istnieje możliwość, że SQL Server utworzy dokładnie taki sam plan wykonania polecenia w obu przypadkach. To co napisze użytkownik w poleceniu SQL serwer i tak tłumaczy po swojemu, optymalizuje i dopiero wykonuje.

 

Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...