Autor | Zpráva | ||
---|---|---|---|
Monic Profil * |
#1 · Zasláno: 27. 6. 2013, 12:01:20
Chtěla bych provést kopii řádku v mySQL v tabulce CLANKY (id,nazev,kategorie,popis,......). ID je primární klíč, tak že při kopii bych CLANEK chtěla mít s dalším novým ID + u řádku KATEGORIE bych chtěla číslo změnit. Ostatní ať se překopíruje.
Jak to provést? |
||
Taps Profil |
Monic:
mělo by to jít pomocí níže uvedeného příkazu (INSERT, SELECT) INSERT INTO `clanky` (nazev,kategorie,popis) SELECT 'test','3','popis' FROM `clanky` WHERE (id = '10' COLLATE utf8_bin); |
||
Kajman Profil |
#3 · Zasláno: 27. 6. 2013, 12:51:15
Taps:
Pro kopii je potřeba použít ty sloupce místo stringů SELECT `nazev`, 3 , `popis` Monic: Pokud potřebujete mít jeden článek ve více kategoriích, nemáte dobře navrhnutou strukturu tabulek. Na to se používá další vazební tabulka, aby text článku byl jen jednou a id článku se mohlo přidat k libovolnému počtu kategorií. |
||
Monic Profil * |
#4 · Zasláno: 27. 6. 2013, 12:59:03
Bohužel nefunguje :(
INSERT INTO clanky (kategorie) SELECT '$kategorie_new' FROM clanky WHERE id = '$id_kopie' Sice se článek založí, ale neokopíruje to data, které se na řádku článku nachází :( tj. zbytek ... time, obsah, title a další věci, které si ukládám pro článek. |
||
Taps Profil |
Monic:
musíš specifikovat sloupce, které chceš zkopírovat |
||
Monic Profil * |
#6 · Zasláno: 27. 6. 2013, 13:08:21
Tak že pokud bych chtěla změnit pouze kategorii a ostatní překopírovat, tak mySQL dotaz bude vypadat například takto?
INSERT INTO clanky (kategorie,nazev,obsah,time,robots) SELECT '$kategorie_new' FROM clanky WHERE id = '$id_kopie' |
||
peta Profil |
Monic: INSERT vklada hodnoty, ktere mu tam napises. tys tam napsal pouze sloupec kategorie a tak se vlozil kategorie a ostatni nulove. Musis uvest nazvy vsech sloupcu, ktere vces vlozit a okopirovat. A misto hodnot, kopirovanych zapsat vlastni data. Viz taps/kajman.
INSERT INTO `clanky` (nazev,kategorie,popis) SELECT nazev, '3' , popis -- zmenene cislo kategorie na 3 FROM `clanky` WHERE (id = '10' COLLATE utf8_bin); |
||
Časová prodleva: 11 let
|
0