Autor Zpráva
microfox
Profil *
Je to spíš technický dotaz než řešení kódu...
Otázka zní: "Jsem schopný zkopírovat řádky z tabulky_1 kde se nachází ve sloupci mejl neco@neco.cz do tabulky_2 ??
ja totiž nevim jak bude vypadat ta podmínka...

Tipnul bych to že si SELECTEM načtu tabulku kde dám podmínku WHERE kde se budu dotazovat na daný mejl v té tabulce a pokud tam budou náké položky tak je chci zkopírovat do tabulky_2 - ideálně přesunout

asi by to šlo přes INSERT ale to je když chci vkládat jeden řádek...co když jich chci vkládat víc...? asi to možná řešit přes pole, ale zatím mě moc nenapadá jak
Tori
Profil
Nejdřív si vytvořte SELECT, který vrátí přesně ta data, která chcete kopírovat. Pak to spojíte dohromady, manuál viz INSERT ... SELECT. Není to nic těžkého, jen je potřeba mít správně ten select a vybírat i ukládat sloupce ve stejném pořadí.
Someone
Profil
Nevim jestli to jde řešit přímo v dotazu(tak jde :) [#2] Tori), ale já bych to (možná neelegantně) řešil takto:

$s = mysql_query("SELECT * FROM tabulka_1 WHERE email = 'neco@neco.cz'");
while ($v = mysql_fetch_assoc($s)) {
    mysql_query("INSERT INTO tabulka_2(neco,neco2,neco3,email) VALUES('".$v['neco']."','".$v['neco2']."','".$v['neco3']."','".$v['email']."')");
}
microfox
Profil *
INSERT `tab2`SELECT (vypsane sloupecky ktere budu kopirovat) FROM `tab1`WHERE email='$email'

to je hezký, co když to není jen tab1 ? co když vycházím z tabulky která je spojovaná z dvou tabulek ? :-)
Bude to vypadat takto?

INSERT `tab2`SELECT (vypsane sloupecky ktere budu kopirovat) FROM `TK_AAA` INNER JOIN `TK_BBB` WHERE email='$email'

šlo by to takto?


Someone:
Přesně tohle jsem našel někde a ono když těch položek je hodně tak by to dlouho trvalo... http://blog.zdenekvecera.cz/item/mysql-jak-prekopirovat-presunout-radky-do-jine-tabulky
Tori
Profil
INSERT INTO `tab2` (sloupecky) SELECT (sloupecky) FROM `TK_AAA` INNER JOIN `TK_BBB` ON podminka spojeni WHERE email='$email'
Případně přidat nějaké ON DUPLICATE KEY UPDATE (nebo INSERT IGNORE) pokud může dojít ke vkládání už existující hodnoty do sloupce s prim. klíčem. Anebo se dá použít i REPLACE ... SELECT.
microfox
Profil *
a tvrzení že tohle řešení je lepší než kolega uvedl výše je správné? já osobně vidím tohle za lepší řešení...kratší...u tamtoho předchozího by se ten script vykonával poměrně dlouho kdyby se mělo zpracovávat mraky dat
Tori
Profil
microfox:
Pokud není potřeba ta data mezi načtení a uložením nějak složitěji upravovat, není důvod to provádět oklikou přes PHP po jednom řádku. Kromě rychlosti tím šetříte paměť - data ze SELECTu se nemusejí tahat z MySQL do PHP.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: