![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Na wstępie powiem, że do tej pory jakość sobie radziłem z różnymi problemami, ale.. brak mi pomysłu i trochę czas nagli (jest wiele osób, które posiadają ten sam sklep (Shoper lub ClikShop) i ten sam problem, a aktualizacja z poprawką tego szybko pewnie nie nadejdzie znając życie). Nie liczę na gotowe rozwiązanie a chociaż na pokazanie mi drogi do rozwiązania. Mam sklep internetowy ale niestety nie aktualizują się stany magazynowe produktu głównego na podstawie wariantów. chciałbym: 1. uzyskać listę produktów, które należy zaktualizować - lista muszę wyeksportować do pliku tylko sam product_id w przypadku gdy suma magazynowa wariantów jest różna od stanu magazynowego produktu głównego 2. aktualizacja stanu magazynowego na podstawie stanu magazynowego wariantów Do rzeczy. Struktura tabeli (część).
+------------+-------+----------+ | product_id | stock | extended | +------------+-------+----------+ | 110 | 7 | 0 | | 110 | 1 | 1 | | 110 | 1 | 1 | | 112 | 5 | 0 | | 112 | 0 | 1 | | 113 | 9 | 0 | | 113 | 2 | 1 | | 113 | 1 | 1 | | 113 | 2 | 1 | | 113 | 2 | 1 | | 115 | 4 | 0 | | 115 | 1 | 1 | | 115 | 1 | 1 | | 115 | 2 | 1 | extended =0 - produkt główny, 1-wariant produktu wymyśliłem zapytanie (Osobne zapytania działają, ale nie wiem jak je połączyć w całość):
chciałem chociaż uzyskać wynik produck_id, stock (główny), sum(stock - wariantów) ale było by to zbyt piękne by się udało - wynik wyszedł spodziewany - subquery returns more then 1 row. wynika to z tego, że nie wszystkie produkty główne mają warianty (czyli są product_id gdzie brak jest extended=1) Rozważałem też wynik z
zrobić jako tabelę tymczasową (macierz), ale zależy mi na jak najprostszym rozwiązaniu - skrypt będzie uruchamiany co 15-30 minut Co podobnego już robiłem, ale jak pewne rzeczy robi się raz na rok to się tego nie pamięta. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
http://sqlfiddle.com/#!9/170eb/8 O coś takiego chodzi? Jeśli nie to podaj prawidłową tablicę wyjściową dla danych z pierwszego postu. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Jest bardzo blisko - będę musiał poprawić
dokładniej to potrzebuję samą listę product_ID gdy IlośćGłównego<>Iloscwariantów -potrzebna do eksportu do pliku i wykorzystane będzie w skrypcie sh który jest już gotowy a potem muszę zrobić aktualizację ilośćGłówna na podstawie IlośćWariantów Wrócę z pracy wieczorem to będę przy tym siedział. Bardzo dziękuję. Siedzę od 1,5h no i mam dumam jak rozwiązać problem z dodaniem jeszcze jednego warunku.
product_id | stock | extended 110 | 7 | 0 110 | 1 | 1 110 | 1 | 1 112 | 1 | 0 112 | 0 | 1 113 | 7 | 0 113 | 1 | 1 113 | 2 | 1 113 | 2 | 1 113 | 2 | 1 i teraz chciałbym aby sprawdzić czy x.stok gdzie x.extended=0 jest równy/różny sum(x1.stock) gdzie x1.extended=1. Biorąc sytuację że chciałbym mieć tylko product_ID gdy x.stock<>sum(x1.stock) to tabela powinna wyglądać tak product_id | IloscGlownego | IloscWariantow 110 | 7 | 2 112 | 1 | 0 113 - nie wyświetla się bo jest ok - IloscGlownego=7 i suma IloscWariantow =7 Podany kod działa dobrze, ale tylko gdy wyświetlamy. Próbowałem na różne kombinacje ale niestety nie wychodzi mi. Dopisanie warunku
niestety nie zmienia nic. Próbowałem z wykorzystaniem HAVING.i też nic
Otrzymuję nic Czy może jakaś sugestia (IMG:style_emoticons/default/questionmark.gif) a jednak działa z having - inaczej zapisane i działa
teraz tylko kod do aktualizacji IloscGlownego na podstawie IloscWariantow. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie jeszcze z innej beczki.
napisałem zapytanie które tworzy plik ze ścieżką do usuwania plików (skrypt basch)
problem dotyczy ostatnich znaków "\\". prawidłowa komenda to . Problem jest taki, że jak na końcu polecenia wpiszę jeden \ to baza wywala błąd, skolei jak piszę \\ to w PHPMyadmin widzę tylko jedno \, natomiast jak wysyłam to do pliku to otrzymuję też \\. potem muszę użyć dodatkowego polecenia do usuwania jednego \. czy jest jakieś rozwiązanie bez dodatkowych poleceń tak by w pliku zapisał się \. Próbowałem zastąpić \ poleceniem char(92). Ale jest tak samo w PHPmyadmin jest \ a w pliku \\ Pod warunkiem, że główny jest tylko jeden:
Jest pięknie napisane, ale wynik nie uwzględnia produktów głównych, które nie mają wariantów - a niestety takie tez bywają. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jest pięknie napisane, ale wynik nie uwzględnia produktów głównych, które nie mają wariantów - a niestety takie tez bywają.
Jeśli nie jest poprawnie, podaj przykładowy rekord dla głównego bez wariantów. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie problem w tym, że w tej tabeli nie ma żadnego znacznika że produkt ma warianty. przeglądałem inne tabele i też nic nie zauważyłem.
produkt główny 140 nie ma wariantów, produkt 141 ma 1 wariant |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzałeś zapytanie, które podałem wyżej?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli nie jest poprawnie, podaj przykładowy rekord dla głównego bez wariantów. Niestety też nie do końca działa bo pokazuje wynik zawierający produkty, których produkt główny i wariant tego produktu =0, ale wpadłem na inny pomysł. skoro produkty główne występują zawsze 1 raz a produkty z wariantami więcej niż 1 to po prostu je zliczyłem
i działa Ten post edytował bojak 18.02.2016, 16:08:54 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
W ten sposób nie pokaże produktu o id=140, który nie ma wariantów.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
O to mi właśnie chodziło - jak pisałem wcześniej. Być może mało treściwie bo mam problem z przekazywaniem informacji - niestety.
Zależy mi, aby z bazy wyciągnąć dane gdzie: stock where expended=0 <> sum(stock) where expended=1. Potrzebuję taką listę z product_id do wysłana do pliku na podstawie którego będą usuwane pliki z cache. bez tego zmiany w bazie nie są widoczne w sklepie. Pewnie można to zrobić kodem php, ale ja nie jestem programistą php,html. na podstawie takiego pobrania danych, będę pisał update żeby suma stanu wariantów nadpisała się na stan magazynowy produktu głównego. Za nim problem będzie rozwiązany przez sklep shopera mnogą potrwać miesiące a czasem lata, a pilnowanie stanów ręcznie to strata czasu. Jak mam trochę czasu to zawsze wychylam się i wysyłam na formu shopera jakieś rozwiązanie problemu- trochę prowizoryczne, ale działa (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 16.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy to jest mało treściwie:) Ale jeśli teraz działa, to ok. No właśnie (IMG:style_emoticons/default/smile.gif) sam wprowadziłem w błąd. dziękuję bardzo za za pomoc i za angażowanie - a w tym chodziło mi że skrypt UWZGLĘDNIA produkty bez wariantów. co innego myślałem, a co innego pisałem - to wszystko przez brak snu 2-5h dziennie Czy mógł bym prosić o rzucenie okiem w wolnej chwili na zapytanie UPDATE
testowałem na kopi i teoretycznie działa poprawnie, ale jak by ktoś mógł rzucić fachowym okiem na poprawność |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 22:24 |