Autor | Zpráva | ||
---|---|---|---|
vasek125 Profil * |
#1 · Zasláno: 24. 1. 2007, 23:10:02
Ahoj. Mám databázi, kde mám několik sloupců a několik řádků s různými hodnotami. Chci docílit toho, aby se do všech u všech řádků, kde je sloupec nějaká hodnota, přidala k nějaké další hodnotě jiná. Asi takhle:
Potřebuju do `lidi` přidat `josef` tam, kde je `datum` 12.2.2005. Teď to řeším přes cyklus, který vybere původní hodnotu a vloží jí zpátky i s přidanou pomocí UPDATE. Nelze to řešit jednodušeji, alegantněji? |
||
tiso Profil |
#2 · Zasláno: 24. 1. 2007, 23:16:19
Skús to popísať tak aby to niekto aj pochopil...
|
||
Eddie Profil |
#3 · Zasláno: 25. 1. 2007, 00:37:30
precital som si to trikrat a stale som to nepochopil... trosku viac rozpis tvoj problem...
|
||
vasek125 Profil * |
#4 · Zasláno: 25. 1. 2007, 06:57:40
Ke stávajícím hodnotám u datumu 12.2.2005 potřebuju přidat josef. Tak aby to vypadalo takhle:
Pokud nejdřív stávající hodnotu vyberu selectem, musím nastavit limit 1 a tím pádem skončím tak, že se josef přidá pouze k první hodnotě kterou u 12.2.2005 najde:
Proto to dělám přes cykly, který jedou řádek po řádku a vybírají původní hodnoty, potom je tam znova zapisují rovnou s hodnotou novou. Chtěl bych vědět, zda by nebylo elegantnější a rychlejší řešení? Něco jako:
p.s.:Tohle samozřejmě nefunguje lidi+josef... |
||
Hugo Profil |
#5 · Zasláno: 25. 1. 2007, 07:07:21
UPDATE `tabulka` SET `lidi` = CONCAT(`lidi`,'josef') WHERE `datum` ='12.2.2005'
|
||
vasek125 Profil * |
#6 · Zasláno: 25. 1. 2007, 14:49:08
dík
|
||
vasek125 Profil * |
#7 · Zasláno: 25. 1. 2007, 15:13:46
No a co kdybych chtěl přidat hodnotu, ale pouze za podmínky, že se v tom lidi už nevyskytuje. Třeba kdyby tam už josef byl, aby se tam nepřidával zase. Jde to taky takhle nějak jednoduše vyřešit?
|
||
k Profil * |
#8 · Zasláno: 25. 1. 2007, 15:23:32
if
nebo replace |
||
vasek125 Profil * |
#9 · Zasláno: 25. 1. 2007, 15:32:00
Supr, už jsem to vyřešil, díky..
|
||
vasek125 Profil * |
#10 · Zasláno: 25. 1. 2007, 15:43:31
.. a ještě něco důležitého, je něco místo CONCAT i na odebrání josef místo na přidání?
|
||
nightfish Profil |
#11 · Zasláno: 25. 1. 2007, 16:23:05
vasek125
pohledej možná by to šlo pomocí replace(lidi, 'josef' ,''), jinak zřejmě pomocí nějaké onanie přes substring a locate a nebo změnit schéma tabulky tak, aby tyhle hrátky nebyly potřeba... |
||
vasek125 Profil * |
#12 · Zasláno: 25. 1. 2007, 16:43:14
Schéma by měnit nešlo, teda šlo, mít 1000 tabulek a milión dalších s miliardami hodnot.... aby to bylo kam ukládat.
|
||
nightfish Profil |
#13 · Zasláno: 25. 1. 2007, 16:48:55
vasek125
nevidím do tvého problému, nicméně 1000 tabulek mi příjde dost |
||
k Profil * |
#14 · Zasláno: 25. 1. 2007, 17:04:12
vasek125
Zajimal by mne presnejsi popis tveho problemu jelikoz 1001000 tabulek je fakt dost.. Urcite existuje efektivnejsi a elegantnejsi reseni, nez ktere momentalne pouzivas. |
||
vasek125 Profil * |
#15 · Zasláno: 25. 1. 2007, 17:29:50
Neexistuje. Dělám program na blokování ip adres, část v php, část v bashi. Tabulka má několik sloupců a tenhle je se zablokovanými porty. Problém jsem popsal stručně a rychle abych tady nezatěžoval vymyslel jsem si ty lidi a pak aplikoval u mě.
|
||
vasek125 Profil * |
#16 · Zasláno: 25. 1. 2007, 17:33:49
nightfish: To s tím replace nejde. Řeším to teď takhle:
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0