Autor | Zpráva | ||
---|---|---|---|
Andrej.B Profil |
Zdravim,
Mam polozky v databaze v alterantivnom BOM. Napriklad Alterantiva * KP425/040/KK8 KP425/080/KK8 Alterantiva 1 KP425/040/TT8 KP425/080/TT8 Alternativa 2 KP425/040/PP8 KP425/080/PP8 Potrebujem si zobrat to "/040/", vlastne je to vzdy medzi // z Alternativy * a pozriet ci sa to nachadza v alterantive 1 a 2 a zobrazit tie polozky ktore obsahuju /040/ cize KP425/040/TT8 a KP425/040/PP8. Ako toho dosiahnut? Dakujem |
||
Kajman Profil |
#2 · Zasláno: 12. 5. 2022, 11:51:30
where sloupec like '%/040/%' |
||
Andrej.B Profil |
#3 · Zasláno: 12. 5. 2022, 12:15:17
To je to, ze ja vobec neviem, co tam bude. moze tam byt hocico /120/ or /180/ or /090/
Vyberie nadradenu polozku napriklad. TR899123F3LDS ta obsahuje v alternative * = KP425/040/KK8, KP425/080/KK8 , TH154, HBSGHS554 v alternative 1 = KP425/040/TT8, KP425/080/TT8 , TH154, HBSGHS554 atd. v alternative 2 = KP425/040/PP8, KP425/080/PP8 , TH154, HBSGHS554 atd. cize v knecnom zobrazeni to potrebujem ako: TR899123F3LDS - KP425/040/KK8 * - zobrazi zakladnu alterativu - - - KP425/040/TT8 1 - prida alternativu z 1 - - - KP425/040/PP8 2 - prida alternativu z 2 - KP425/080/KK8 * - - - KP425/080/TT8 1 - - - KP425/080/PP8 2 Tie dve su rovnaka kategoria, ostatne su ine kategorie a tak si ich rozdelujem podla kategorii a nieje problem, teraz mi to spadne do rovnakej casti aj /040/ aj /080/ - su to vlastne sirky materialu Teraz to mam ako: TR899123F3LDS - KP425/040/KK8 * - zobrazi zakladnu alterativu - - - KP425/040/TT8 1 - prida alternativu z 1 - - - KP425/040/PP8 2 - prida alternativu z 2 - - - KP425/080/TT8 1 - - - KP425/080/PP8 2 - KP425/080/KK8 * - - - KP425/080/TT8 1 - - - KP425/080/PP8 2 - - - KP425/040/TT8 1 - - - KP425/040/PP8 2 Najskor si budem musit najst co obsahuje vlastne ta alternativa v * preg_match_all('#/([^/]*)/#', $input, $matches); ukaze mi co je vlastne v tej alterantive co idem hladat. najde /040/ a mal by som hladat v tej dalsej alternative a zobrazil vsetko, co obsahuje ak tam je ten string /040/ napriklad. Neviem ci to je zrozumitelne. Dakujem Andrej |
||
Kajman Profil |
#4 · Zasláno: 12. 5. 2022, 13:43:43
Pokud je šírka důležitá vlastnost, měla by být v samostatném sloupci. Např. ji tam můžete parsovat při ukládání. Vypadá to, že by Vám ten samostatný sloupec ušetřil práci a databázi se také určitě uleví.
|
||
juriad Profil |
#5 · Zasláno: 12. 5. 2022, 19:55:39
Mluvíš o databázi, ale nepopisuješ její strukturu, naopak se snažíš o nějaké parsování textu v PHP. Souhlasím s Kajman, že by sis měl opravit databázi a provést výpočet přímo tam.
Ale k tvé otázce. Osobně bych se vyhnul preg funkcím, toto jde provést mnohem jednodušeji: <?php $sirka = explode('/', 'KP425/040/KK8')[1]; # "040" $stejna_sirka = strpos('KP425/040/TT8', '/' . $sirka . '/') !== false; # true |
||
Andrej.B Profil |
Kajman:
„Pokud je šírka důležitá vlastnost, měla by být v samostatném sloupci. Např. ji tam můžete parsovat při ukládání. Vypadá to, že by Vám ten samostatný sloupec ušetřil práci a databázi se také určitě uleví.“ To je to, co absolutne nedokazem ovplyvnit. Nedokazem napisat aplikaciu, ktora by mi to pri vkladani do Db urobila. Su to CSV a moja odbornost nieje tak vysoko a casovo tiez nie. V inom treade ste mi uz navrhovali tiez nieco podobne ohladne impoortovania csv, ale to je iny level. juriad: Dakujem, perfektne, funguje ako ma. |
||
Kajman Profil |
#7 · Zasláno: 13. 5. 2022, 09:29:25
Na to stačí klidně jeden příkaz update, který uděláte po importu.
UPDATE tabulka SET sirka = Substring_index(Substring_index(sloupec, '/', 2), '/', -1) WHERE sirka IS NULL AND sloupec LIKE '%/%/%' Přijde mi, že jste si ukosl moc velké sousto. Možná bude lepší, když projekt přenecháte někomu kompetentnějšímu. |
||
Kcko Profil |
#8 · Zasláno: 13. 5. 2022, 09:58:31
Kajman:
„Přijde mi, že jste si ukosl moc velké sousto. Možná bude lepší, když projekt přenecháte někomu kompetentnějšímu.“ Souhlas. Tazatel se ptá defakto na elementární věci a základní operace. Přijdou pravděpodobně horší věci a řešit každý požadavek (v podstate celý) na diskusi vypadá dost divně, nedejbože, aby se k tomu zadavatel nějak doklikal. |
||
Andrej.B Profil |
#9 · Zasláno: 13. 5. 2022, 11:52:55
Kajman, Kcko:
Velke susto? To urcite. :) Najskor len jednoducha vec, co bude ukazovat nejake reporty a potom si kazdy dava poziadavky a bobtna to. Nerobim programatora, co sa tym zivy, to by som uz zomrel davno od hladu :) Dakujem za pomoc, vyskusam si ten Update |
||
juriad Profil |
#10 · Zasláno: 13. 5. 2022, 16:20:10
Pokud má Andrej.B dostupnou relativně novou MySQL databázi, mohl by použít i generované sloupce. Pak by si mohl snadno transparentně parsovat kódy produktů a nemusel by se o to vůbec start v PHP.
|
||
Andrej.B Profil |
#11 · Zasláno: 13. 5. 2022, 19:37:10
juriad:
je to od 5.7, ale vypada to dobre celkom. MySQL version: 5.5.5-10.3.29-MariaDB-0ubuntu0.20.10.1 through PHP extension MySQLi |
||
blaaablaaa Profil |
#12 · Zasláno: 14. 5. 2022, 18:28:47
juriad:
Případně tohle může řešit triggerem v sql, pokud import probíhá mimo jeho režii. |
||
Časová prodleva: 2 roky
|
0