Autor | Zpráva | ||
---|---|---|---|
Prkny Profil |
#1 · Zasláno: 22. 7. 2020, 09:08:27
Zdravím, prosím o pomoc.
Do níže uvedeného MySQL dotazu, bych potřeboval vložit podmínku: Když zbozi_volby1.ean je prázdný, tak zbozi_volby1.ean = ziv.ean Pro Insert by to mělo být logicky vždy a pro Update jen když je prázdný zbozi_volby1.ean INSERT INTO zbozi_volby1 (id_zbozi, kod, ean, nadpis_volby, volba, aktivni, jina_dostupnost) SELECT z.id, zi.isbn, zi.ean, 'Varianta', ziv.volba, zi.dostupnost, ziv.jina_dostupnost FROM `zbozi` z, `zbozi_import_volby` ziv, `zbozi_import` zi WHERE zi.velkoobchod='".$cislo_velkoobchodu."' AND zi.item_group_id='".$data['z_codepack']."' AND zi.dostupnost>0 AND ziv.id_zbozi_importu=zi.id AND zi.item_group_id=z.codepack AND zi.velkoobchod=z.velkoobchod ON DUPLICATE KEY UPDATE zbozi_volby1.aktivni = '1', zbozi_volby1.jina_dostupnost = ziv.jina_dostupnost, zbozi_volby1.kod = zi.isbn Předem děkuji za pomoc. |
||
Serg Profil |
Do selectu jde přidat funkce IF:
IF(expression, expr_true, expr_false)
Něco jako: INSERT INTO zbozi_volby1 (id_zbozi, kod, ean, nadpis_volby, volba, aktivni, jina_dostupnost) SELECT z.id, zi.isbn, IF(zi.ean = '', ziv.ean, zi.ean) 'Varianta', ziv.volba, zi.dostupnost, ziv.jina_dostupnost FROM `zbozi` z, `zbozi_import_volby` ziv, `zbozi_import` zi WHERE zi.velkoobchod='".$cislo_velkoobchodu."' AND zi.item_group_id='".$data['z_codepack']."' AND zi.dostupnost>0 AND ziv.id_zbozi_importu=zi.id AND zi.item_group_id=z.codepack AND zi.velkoobchod=z.velkoobchod ON DUPLICATE KEY UPDATE zbozi_volby1.aktivni = '1', zbozi_volby1.jina_dostupnost = ziv.jina_dostupnost, zbozi_volby1.kod = zi.isbn Jen mě tak napadá, nebylo by přehlednější použít JOIN? A taky mi příjde že ON DUPLICATE KEY UPDATE tam moc nepomáhá, jelikož u druhého a třetího přiřazení to přepíše na stejnou hodnotu kterou tam právě vložil, takže z toho bude pořád duplicita, pokud to tedy nějak nevyřeší ten sloupec "aktivni" = 1. Edit: Ještě je taky rozdíl jestli je to prázdný řetězec, nebo je tam NULL, ve druhém případě je potřeba spíš funkce COALESCE než IF |
||
Prkny Profil |
#3 · Zasláno: 22. 7. 2020, 13:43:55
Děkuji moc...
Řetězec není NULL, takže takto je to správě. Pokud by to bylo přes JOIN přehlednější, jsem pro všemi deseti to změnit. Sám jsem na to ale krátký s MYSQL umím tak okrajově, ale třeba bych to přes JOIN lépe chápal, konkrétně tohle je fragment kódu který mi dodával externista ... |
||
Časová prodleva: 4 roky
|
0