MYSQL query

Vzkaz pro moderátora - admina:
smažte radši to starší téma. toto je nový dotaz, nový případ..

----
ahoj, mám tu další dotázek

V mé tabulce (hm2_history) je sloupec "description" a v něm je řetězec, který
chci vymazat. Není ale v každé řádce. Chci vymazat jen ten řetězec, ostatní chci
nechat zachováno.

Myslel jsem že by to mohlo být takhle:

UPDATE `hm2_history` DELETE `description`="blbost, kterou chci vymazat"

nebo

UPDATE `hm2_history` SET `description`="" WHERE `description`="retezec ktery
chci smazat"
- ale to bz mi to smazalo asi celé pole description a to já nechci..

nemůžete mi prosím poradit?
Když jsem ti poradil v původním vlákně, ty si založíš nové...

Zadání se mi nezdá jednoznačné. Pokud chceš u každého řádku vymazat obsat sloupce description:

UPDATE `hm2_history` SET `description` = ""

Pokud chceš sloupec desription vymazat je u řádků, které obsahují zvolený řetězec:

UPDATE `hm2_history` SET `description` = "" WHERE `description`="retezec ktery chci smazat"

Poznámky:
- slovo "pole" se v PHP používá na něco jiného
- proč to nezkusíš (po zazálohování)? Stejně z to budeš muset vyzkoušet.
<HTML>Když je to nový dotaz, tak proč je název tématu stejný?
Příště si tedy nejdřív rozmysli, jestli jen položíš dotaz nebo založíš nové téma. A když už položíš dotaz, tak nezakládej zároveň i téma. Kam pak máme vlastně odpovídat?

<a href="http://halogan.php5.cz/jak-se-chovat-na-diskuznich-serverech.html">Jak se chovat na diskusních serverech</a><br>
<a href="http://stare.cz/otazky">Jak se správně ptát</a><br>
;-)</HTML>
Re: Thalia - Já jsem nové téma založil, ale admin ho smazal
Nové vlákno jsem založil, proto, že starčí je nepřehledné, maji to tu vůbec děsně udělaný. ani si nemohu přečíst všechny příspěvky. musím klikat na každý vzlášť.

Neřekl jsem že chci vymazat description.

Chci jenom vymazat řetězec v POLI description, tzn ne celé. ytento řetězec navíc není v každé řádce..

ps: kdybyste byl laskav tak mi tedy řekněte co použít místo pole. buňka? nebo co?

díky
<HTML>>>ani si nemohu přečíst všechny příspěvky. musím klikat na každý vzlášť.
Já ne. Ty máš zapnuto strukturované zobrazení? Zkus si to přepnout na Seznam reakcí ;-) (vpravo nahoře pod menu)

>>Já jsem nové téma založil, ale admin ho smazal
To jsem smazala já. Když už jsi položil dotaz, nebylo třeba zakládat pro něj ještě i nové téma a navíc se stejným názvem (tím pro mě osobně nové téma ztrácí tak trochu smysl). Teď už je to tak, jak sis představoval, ale příště si to lépe promysli.

K dotazu (jestli to tedy správně chápu): když description nechceš mazat celé, tak si ho vytáhni do proměnné, prohledej, řetězec smaž a updatuj změněnou proměnnou opět do db.</HTML>
jo, díky za radu s tím strukturováním. funguje to.

Jak to myslíš s tou proměnnou?
mohla by jsi napsat návod?

Myslím že nejjednodušší by bylo zadat prostě příkaz do phpmyadmina

doufám že chápete o co mi jde :-/
Řekl bych, že máš problémy s vyjadřováním. Myslím si, že jsem zodpověděl otázku, na základě toho, jak byla položena. Pokud nemáš ten dojem, vyjádři se znovu, pokud možno srozumitelně a jednoznačně. Nejlépe s příkladem (třeba 3 ukázkové řádky) před smazáním a po smazání, jak si to představuješ.
no, to je pravda že mám problémy s vyjadřováním. navíc co se týče php a sql jsem amatér, takže neznám pojmy.

jednoduše bych to řekl takto:

mám sql databázi. zde tabulku "hm2_history". V této tabulce jsou různé sloupce (asi 8). Jeden z nich je "description". Tabulka má mnoho řádků (mnoho vstupů (IDs, nebo jak to mám nazvat - poraďte mi..) V některých řádcích ve sloupci "description" je ten řetězec a v jiných není. Řetězcem mám na mysli např "blbost 123456". Vždy ale řádky (položky) obsahují různé údaje. Bohužel do některých polí (položek) byl vložen ten nechtěný řetězec. a já ho potřebuju vymazat.

Takže bych potřeboval nějakou funkci If pole description obsahuje řetězec, nahradď "" (prádným místem.. chci totiž vymazat jen řetězec, ne celé pole pod sloupcem description)..

Myslím že by to šlo přes Query v phpmyadminu ne?

Mohli byste to přetlumočit do srozumitelného jazyka?

děkuji mnohokrát
Takže příklad (o který jsem žádal tebe):

Původně:
ID - sl1 - sl2 - sl3 - description
1 - neco - neco - neco - <nic>
2 - neco - neco - neco - blbost 123456
3 - neco - neco - neco - JAJA
4 - neco - neco - neco - blbost 123456

Chceš tedy, aby pouze obsah buňky ve sloupci description byl vymazán, pokud obsahuje blbost 123456?

Po změně:
ID - sl1 - sl2 - sl3 - description
1 - neco - neco - neco - <nic>
2 - neco - neco - neco - <nic>
3 - neco - neco - neco - JAJA
4 - neco - neco - neco - <nic>

Potom jsem už řešení napsal dříve:

UPDATE `hm2_history` SET `description` = "" WHERE `description` = "blbost 123456"
wow, to je úplně profesionální pomoc. díky
--

tak takhle jsem to právě nemyslel.
chci aby to bylo takhle:

(řetězec, který chci smazat: "blbost 123456")

Původně:
ID - sl1 - sl2 - sl3 - description
1 - neco - neco - neco - blbost 123456 abc
2 - neco - neco - neco - JAJA
3 - neco - neco - neco - blbost 123456
4 - neco - neco - neco - abcdef blbost 123456 xyz

Po změně:
ID - sl1 - sl2 - sl3 - description
1 - neco - neco - neco - abc
2 - neco - neco - neco - JAJA
3 - neco - neco - neco - <nic>
4 - neco - neco - neco - abcdef xyz

moc díky za odpověď, mohu vám něco nabídnout na oplátku?
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

UPDATE `tabulka` SET `sloupec` = REPLACE(`sloupec`,'retezec','') WHERE `sloupec` LIKE '%retezec%'

... to by mohlo fungovat
mm.gene.cz - je takovy jednoduchy navod na sql
peta: zajímalo by mě jak jste na to přišel. na té stránce to nemohu vůbec najít..
děkuju moc.
Nemůžu uvěřit že se to povedlo! tenhle řetězec funguje!
UPDATE `tabulka` SET `sloupec` = REPLACE(`sloupec`,'retezec','') WHERE `sloupec` LIKE '%retezec%'

nemohl by mi někdo vysvětlit proč to tak je. Neznáte někdo odkaz, kde bych se mohl naučit jak sestavovat takové příkazy?
jenom pripominka, to WHERE `sloupec` LIKE '%retezec%' je tam zbytecny, klidne se to muze udelat nad celou tabulkou a bude i rychlejsi

kdyz v dane radce nebude ten text, REPLACE nebude nic nahrazovat, a k zadne zmene tedy nedojde
Mike (specialfx.xf.cz)
to je fakt :)

koder-amater (zww.wz.cz)
mm.gene.cz - je takovy jednoduchy navod na sql
- Regulární výrazy - LIKE
- Manipulace s textem - REPLACE(retezec,co_nahradit,cim_nahradit);
reg. vyrazy, protoze nehledas konkretni retezec, ale neco jemu podobne
a replace je prikaz nahrazeni

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
seznam funkci pro praci s textem
z toho to snad posklada kazdy...