25.08.2020 22:40
1
Zdravím,

zkouším a bádám jak rychle naimportovat skladové pozice k produktům u Prestashopu.

UPDATE `ps_product` SET `location` = 'Sklad1' WHERE `id_product` = 5480;
UPDATE `ps_stock_available` SET `location` = 'Sklad1' WHERE `id_product` = 5480;
UPDATE `ps_product_attribute` SET `location` = 'Sklad1' WHERE `id_product` = 5480;

Nešel by tento příkaz nějak sloučit? Abych nemusel zadávat 3x to stejné číslo?

Všechny produkty které musím naimportovat mají výstup v excelu

"id","Sklad"
5480,Sklad10
5479,Sklad9
5478,Sklad8
25.08.2020 23:51
2
Pomocí JOIN

Zjednodušeně něco jako:

Kód:
UPDATE TABLE_A A 
JOIN TABLE_B b ON a.join_col = b.join_col AND a.column_a = b.column_b 
JOIN TABLE_C c ON [condition]
SET a.column_c = 'xxx'
Vypadat by to mělo tedy takto:
Kód:
UPDATE ps_product
JOIN ps_stock_available ON ps_product.id_product = ps_stock_available.id_product
JOIN ps_product_attribute ON ps_product.id_product = ps_product_attribute.id_product
SET ps_product.location = 'sklad1', ps_stock_available.location = 'sklad1', ps_product_attribute.location = 'sklad1'
WHERE ps_product.id_product = 5480
-> V případě zájmu můžu vytvořit automatický parsovací skript - cena 1000 :) Stačí poté nahrát na server a spouštět pravidelně třeba cronem...
26.08.2020 00:05
3
Vypadat by to mělo tedy takto:
Kód:
UPDATE ps_product
JOIN ps_stock_available ON ps_product.id_product = ps_stock_available.id_product
JOIN ps_product_attribute ON ps_product.id_product = ps_product_attribute.id_product
SET ps_product.location = 'sklad1', ps_stock_available.location = 'sklad1', ps_product_attribute.location = 'sklad1'
WHERE ps_product.id_product = 5480
Dalo by se přidat více ID produktů?
Kód:
WHERE ps_product.id_product = 5480,5481,5482 atd?
-> V případě zájmu můžu vytvořit automatický parsovací skript - cena 1000 :) Stačí poté nahrát na server a spouštět pravidelně třeba cronem...

Co jsem koukal na Excel je v tom trošku bordel, takže mě asi čeká ruční vkládání a následná kontrola.
Pokud to ovšem půjde, napíšu o script :)
26.08.2020 01:42
4
Ano, lze i více ID například intervalem nebo IN

Kód:
WHERE ps_product.id_product IN ('1,2,3,4,5')
Kód:
WHERE ps_product.id_product >= 5480 AND ps_product.id_product <= 5482

Pokud je omezen čas pro zpracování lze použít mysqli_multi_query a nahrát více příkazů najednou nebo pokud je databáze InnoDB, tak pomocí TRANSACTION. Jestli ale není v databázi desetitisíce nebo spíše stovky tisíc produktů, tak je to zbytečné.
26.08.2020 08:54
5
Moc děkuju, jdu to zkusit :)