Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Prestashop vytvoření triger v Mysql

Celsi
verified
rating uzivatele
(22 hodnocení)
17. 2. 2022 13:02:13
Může mi někdo poradit jak docílit podmínky pro úpravu dostupnosti na základě počtu produktů? Chci automatický triger v databázi
BEGIN                                                                     
UPDATE ps_product_lang SET available_now="Skladem dodání do 2 dnů" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=250);
UPDATE ps_product_lang SET available_now="Dodání do týdne" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=350);
END
Toto říká že se upraví pole available_now = Skladem dodání do 2 dnů pokud bude počet produktů 250
Jinak pokud bude 350 tak se nastaví Dodání do týdne.
Dá se přidat další podmínka pro název produktu? Například když bude v popisu "tužka"
BEGIN                                                                     
UPDATE ps_product_lang SET available_now="Skladem dodání do 2 dnů" AND name="Tužka" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=250);
UPDATE ps_product_lang SET available_now="Dodání do týdne" AND name="Tužka" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=350);
END
Toto zafunguje ale hodí hodnoty vailable_now je 0. Pokud tam není ta druhá podmínka AND name="Tužka" vše funguje skvěle.
Inspiroval jsem se: Odkaz
Děkuju
17. 2. 2022 13:02:13
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498284
TomasX
verified
rating uzivatele
(4 hodnocení)
17. 2. 2022 13:44:41
moc teda nerozumím tvému popisu.
Druhý příklad s tužkou máš špatně, to AND name="Tužka" máš mít až za WHERE, nikoliv před ním. Nebude chyba v tom?
Dej pozor, že tohle způsobí poměrně dost operací na databázi při každé změně produktů.
17. 2. 2022 13:44:41
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498283
Celsi
verified
rating uzivatele
(22 hodnocení)
17. 2. 2022 13:58:10
Děkuji za reakci, mělo by to tedy být takto?
BEGIN                                                                     
UPDATE ps_product_lang SET available_now="Skladem dodání do 2 dnů" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=250 AND name="Tužka" );
UPDATE ps_product_lang SET available_now="Dodání do týdne" WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=350 AND name="Tužka" );
END
Ohledně operací jsem si vědom ale nemělo by se stát že skladem bude 250 nebo 350 kusů na skladě kromě tužek. Ale raději bych to ošetřil tou podmínkou jména.
17. 2. 2022 13:58:10
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498282
TomasX
verified
rating uzivatele
(4 hodnocení)
17. 2. 2022 14:08:59
ano, takhle nějak to být může. Jen pozor, že kontrukce name="Tužka" hledá přesnou shodu, pokud chceš hledat slovo Tužka v názvu, musíš použít name like "%tužka%". Stejně tak předpokládám, že to quantity=250 je jen ilustrační a v praxi tam budeš mít něco jako quantity > 250 a quantity <= 250
17. 2. 2022 14:08:59
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498281
Celsi
verified
rating uzivatele
(22 hodnocení)
17. 2. 2022 14:29:29
Tak to bohužel nepomohlo, neudělá to při změně nic v případě úpravy počtu. Proměnná %tužka% je ignorována.
Zkusím ještě něco najít, ale děkuju
17. 2. 2022 14:29:29
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498280
TomasX
verified
rating uzivatele
(4 hodnocení)
17. 2. 2022 14:49:18
A co ti vrací samostatný dotaz?
SELECT id_product FROM ps_stock_available WHERE quantity=250 AND name="Tužka"
Vylaď si ten vnitřek, nejspíš to máš špatně. Takhle jak je udělaný, tak potřebuje přesně množství 250, což asi není v pořádku, ne?
17. 2. 2022 14:49:18
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498279
Celsi
verified
rating uzivatele
(22 hodnocení)
17. 2. 2022 15:23:45
 

MySQL said:

V ps_stock_available se nenachází sloupec "name". Takže jsem koukal špatně do databáze, moje chyba. Díky za upozornění.
To množství jsem si upravil cíleně na 250 kusů takže něco by to mělo najít. Pak upravím přesný počet který se bude odečítat ze skladu na základě objednávek.
17. 2. 2022 15:23:45
https://webtrh.cz/diskuse/prestashop-vytvoreni-triger-v-mysql/#reply1498278
Pro odpověď se přihlašte.
Přihlásit