Autor | Zpráva | ||
---|---|---|---|
Pan X Profil |
Zdravím, řeším teď drobet složitější problém a nevim si sním rady.
Kamarád mě prosil jestli bych mu nenapsal script na opravu databáze, protože se mu pokazilo vložení dat a databáze není úplná. Z údajů, které mám se dá zbytek automaticky vygenerovat jen nevím jak to ideálně vyřešit. Mám tuto tabulku: http://2i.cz/43e74963b0 Problém je v tom že správně by měla vypadat takto: http://2i.cz/25812f05d6 (na pořadí nezáleží, jen aby příslušné id patřili ke správným protějškům) Potřebuji nějak automaticky vygenerovat vztahy a doplnit tabulku. Ručně by to nebyl problém, ale nedaří se mi vymyslet jak to přepracovat do scriptu. (ručně není možné dělat, dat je hromada) Potřeboval bych alespon nakopnout z jakého konce to mám chytit, zbytek už si napíši sám Mohl by někdo poradit? Předem díky |
||
mimochodec Profil |
#2 · Zasláno: 22. 5. 2012, 11:44:35 · Upravil/a: mimochodec
Nemohl bys popsat, co je na tom prvním špatně a na druhém správně, nebo o co tam vlastně jde? Opravdu musíš zatěžovat ty, co by ti chtěli poradit?
Na druhý pohled: v té druhé tabulce jsou zřejmě všechny permutace čísel v nějakém rozsahu. Jestli to správně chápu, chceš vygenerovat všechny, pro každou ověřit, jestli už v databázi je a pokud není, vložit ji tam. Jestli to je jednorázová operace, udělej si tolik vnořených cyklů, kolik těch čísel je (tak jaks to zobrazil, by to byly dva cykly), v každém průchodu ověř přítomnost (SELECT COUNT) a když nenajdeš, vlož (INSERT). A jinak bych řekl, že vůbec existence takové tabulky zavání špatným návrhem aplikace a je nadbytečná. |
||
Pan X Profil |
mimochodec:
databáze představuje databázi slovíček, Je k dispozici seznam EN, CZ a slovíček. S tím že jak bývá zbykem jedno EN slovíčko má více CZ výrazů a naopak... Tudíž když máme EN tabulku: id | text 1. | find 2. | found CZ tabulku: 1. | najít 2. | našel 3. | nalezl A tabulka co je výše je sločuje tudíž je třeba mít:¨ id_en | id_cz 1 | 1 1 | 2 1 | 3 2 | 1 2 | 2 2 | 3 Akorát že databáze která je k dispozici teď obsahuje data jen jako: id_en | id_cz 1 | 1 1 | 3 2 | 1 2 | 2 což je neúplně a já musím automaticky doplnit: id_en | id_cz 1 | 2 2 | 3 s tím, že to by mělo jít automaticky dohledat vždy.. podle idecek |
||
mimochodec Profil |
#4 · Zasláno: 22. 5. 2012, 12:07:51
Pan X:
ok, tak jsem myslel, že jsem to pochopil, ale byl to omyl. Možná poradí někdo jiný, já nevím, co chceš. Resp. nechápu co máš a co jak z toho chceš udělat. |
||
Kajman Profil |
#5 · Zasláno: 22. 5. 2012, 12:34:18
Pan X:
„a já musím automaticky doplnit 1 | 2 a 2 | 3 “ A jak jste přišel na zrovna na tyto kombinace? |
||
Pan X Profil |
#6 · Zasláno: 22. 5. 2012, 12:39:31
Vezmu id_en = 1 a vidím že pro id_cz je také 1, takže když vytáhnu všechny id které odpovídají id_cz 1 => dostanu id_en 1,2 a když pro id_en 2 platí id_cz 2 tak automaticky musí i id_en 1 platit id_cz 2.
Ručně by to jít mělo, ale jak tendle postup zapsat do scriptu aby to nebyla nějaká hrozná prasárna mám problém... |
||
Kajman Profil |
#7 · Zasláno: 22. 5. 2012, 13:10:52
Možná to půjde takto nějak
#INSERT INTO preklady SELECT DISTINCT p2.id_en, p3.id_cz FROM preklady p1 JOIN preklady p2 ON p1.id_cz = p2.id_cz JOIN preklady p3 ON p1.id_en = p3.id_en LEFT JOIN preklady p4 ON p2.id_en = p4.id_en AND p3.id_cz = p4.id_cz WHERE p4.id_en IS NULL Těžko říct, jestli to je přesně to, co hledáte. Také nevím, jestli chcete chce po doplnění nových vazeb znovu dopolnit stejně další a další - to byste musel spouštět ten příkaz tak dlouho, dokud něco přidává. Každopádně si nemyslím, že to takhle automaticky bude vždy pravda. Stejné slovo v jednom jazyku může mít různé významy a jejich překlad do jiného jazyka může být závislý na tom významu. Při vazbách leaf = list paper = list paper = papír |
||
Pan X Profil |
#8 · Zasláno: 22. 5. 2012, 15:09:46
Kajman:
díky, odzkouším to Při vazbách leaf = list paper = list paper = papír tedy automaticky doplníte nesmyslný překlad leaf = papír? Tak tadle varianta mě nenapadla, abych se přiznal.... a obávám se že ano, že by to automaticky přidalo i tuto variantu jako správnou. Otázka je jestli se toto dá vůbec nějak řešit. Script, který načítal slovíčka z externího souboru měl takto fungovat aby automaticky přiřazoval nové významy ke starým slovíčkům na základě tohodle pravidla, akorát nefungoval vůbec jak měl. Asi s ním budu muset ještě probrat, zdá se že to bude celkem neřešitelný problém.... |
||
Kajman Profil |
#9 · Zasláno: 22. 5. 2012, 15:28:45
Pan X:
„zdá se že to bude celkem neřešitelný problém“ Stejná slova různého významu by musela mít různá id. |
||
Pan X Profil |
#10 · Zasláno: 22. 5. 2012, 15:38:40
Automat to nepozná... asi budu muset přepsat celej parser a zkusit tam data nacpat do db znova a správně...
(... i když stejne to neřeší jak přidávat významy ke slovíčkům abych se vyhnul sloučení tech nesmyslů :( ) |
||
Časová prodleva: 13 let
|
0