ďťż
 
[MySQL] update ďťż
 
[MySQL] update
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MySQL] update



what - 14-01-2007 00:01
[MySQL] update
  witam, mam pytanie; dana jest nastepujaca tabelka przechowujaca polaczenia:

produkt_id, opis_id, cos_jeszcze primary_key(produkt_id, opis_id);

chcialbym zmienic powiazania dla produktow (dane mam tylko jego opis_id),
poprzez bezposrednia zamiane opis_id moga powstac zdublowane klucze,

mialem pomysl zeby najpierw wyszukac te produkt_id, new_opis_id dla ktorych
nastapi zmiana i jesli nie bedzie takich rekordow to dopiero update, tyle ze
takie cos z poziomu php wygeneruje sporo zapytan do bazy i nie wiem czy nie
bedzie to optymalne.
moje pytanie czy nie da sie tego zrealizowac za pomoca samego mysql badz
odrobina php?

pozdrawiam.





sg - 14-01-2007 00:01

  Dnia 13-01-2007 o 19:04:02 what <fullftp@wp.pl> napisał(a):

> witam, mam pytanie; dana jest nastepujaca tabelka przechowujaca
> polaczenia:
>
> produkt_id, opis_id, cos_jeszcze primary_key(produkt_id, opis_id);
>
> chcialbym zmienic powiazania dla produktow (dane mam tylko jego opis_id),
> poprzez bezposrednia zamiane opis_id moga powstac zdublowane klucze,
>
> mialem pomysl zeby najpierw wyszukac te produkt_id, new_opis_id dla
> ktorych
> nastapi zmiana i jesli nie bedzie takich rekordow to dopiero update,
> tyle ze
> takie cos z poziomu php wygeneruje sporo zapytan do bazy i nie wiem czy
> nie
> bedzie to optymalne.
> moje pytanie czy nie da sie tego zrealizowac za pomoca samego mysql badz
> odrobina php?
>
> pozdrawiam.
>
>

napisz jeszcze raz o co Ci chodzi




what - 14-01-2007 00:01

  CREATE TABLE `products_exmodel` (
`products_id` int(11) NOT NULL default '0',
`products_exmodel` varchar(30) NOT NULL default '',
`products_date_added` datetime NOT NULL default '0000-00-00 00:00:00',
`products_last_modified` datetime default NULL,
`products_date_available` datetime default NULL,
PRIMARY KEY (`products_id`,`products_exmodel`)
);

czyli np.:
1 aaa 2007-01-13 18:17:32 NULL NULL
1 bbb 2007-01-13 18:17:32 NULL NULL
2 bbb 2007-01-13 18:17:32 NULL NULL

Chce zmienic nazwy bbb na aaa. Jesli nie da sie tego w prosty sposob zrobic,
to najpierw trzeba by bylo:

array row = select products_id, products_exmodel where products_exmodel =
stara_nazwa;

foreach(row):
res = select products_id, products_exmodel from products_exmodel
where products_exmodel = nowa_nazwa
and products_id = row['products_id'];
if (res = brak rekordu)
update products_exmodel set products_exmodel = nowa_nazwa
where products_exmodel = stara_nazwa
and products_id = row['products_id'];

wiec z deka nieoptymalne, zapytan moze byc kilka tysiecy..

jakies pomysly?
pozdr.




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 14-01-2007 00:01

  what wrote:
> CREATE TABLE `products_exmodel` (
> `products_id` int(11) NOT NULL default '0',
> `products_exmodel` varchar(30) NOT NULL default '',
> `products_date_added` datetime NOT NULL default '0000-00-00 00:00:00',
> `products_last_modified` datetime default NULL,
> `products_date_available` datetime default NULL,
> PRIMARY KEY (`products_id`,`products_exmodel`)
> );
>
> czyli np.:
> 1 aaa 2007-01-13 18:17:32 NULL NULL
> 1 bbb 2007-01-13 18:17:32 NULL NULL
> 2 bbb 2007-01-13 18:17:32 NULL NULL
>
> Chce zmienic nazwy bbb na aaa.

Dalej kiepsko tłumaczysz.

> Jesli nie da sie tego w prosty sposob zrobic,
> to najpierw trzeba by bylo:
>
> array row = select products_id, products_exmodel where products_exmodel =
> stara_nazwa;
>
> foreach(row):
> res = select products_id, products_exmodel from products_exmodel
> where products_exmodel = nowa_nazwa
> and products_id = row['products_id'];
> if (res = brak rekordu)
> update products_exmodel set products_exmodel = nowa_nazwa
> where products_exmodel = stara_nazwa
> and products_id = row['products_id'];
>
> wiec z deka nieoptymalne, zapytan moze byc kilka tysiecy..

O ile dobrze zrozumiałem, to wystarczy update z warunkiem na nieistnienie
rekordu 'aaa' dla product_id. Najprościej z subselectem albo tablicą tymczasową
- zalezy od wersji mysql'a.

--
P.M.





what - 14-01-2007 00:01

 
Użytkownik "Paweł Matejski" <madej@spam.madej.pl.eu.org> napisał w
wiadomości news:eobh1l$9r9$1@inews.gazeta.pl...
>
> O ile dobrze zrozumiałem, to wystarczy update z warunkiem na nieistnienie
> rekordu 'aaa' dla product_id. Najprościej z subselectem albo tablicą
> tymczasową
> - zalezy od wersji mysql'a.
>

po prostu nie sprawdzilem w manualu, update ma takie cos jak ignore ktora
ignoruje dublowanie kluczy nie przerywajac dzialania i w sumie to mi
wystarczy,
dzieki wszystkim za zainteresowanie
pozdr.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • quentinho.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com