Autor Zpráva
Kcko
Profil
Potřebuji vložit data z jedné tabulky do druhé.
Jenže pokud to použiji takto, nebere to jako sloupec ale jako string. Těch jazyků je 10, chtěl jsem si napsat proceduru a procpat to přes mysql proměnné.

Neví někdo zápis?


SET @langName = 'cz'; // když to změním na cz tak to zařve parse error
SET @langId = 1;

// tabulka temp_dictionary ma strukturu id | cz | en | de ... atd
INSERT INTO 
front_dictionary_lang (front_dictionary_id, language_id, translate)
SELECT id, @langId, @langName
FROM temp_dictionary WHERE @langName != '';,
Tori
Profil
Kcko:
Pokud byste věděl předem, které jazyky v tabulce jsou, resp. které chcete importovat, dá se použít takováhle krkolomnost:
INSERT INTO novePreklady (id, lang, text)
SELECT p.id, column_name as lang, ELT(FIELD(column_name, 'cz', 'en'), p.cz, p.en) as text
FROM test.preklady p
CROSS JOIN (
    SELECT column_name 
    FROM information_schema.COLUMNS 
    WHERE table_schema = 'test' AND table_name = 'preklady' AND column_name in ('cz', 'en')
) meta
Kajman
Profil
Můžeš si sestavit dotaz a ten spustit.
http://stackoverflow.com/questions/4428761/mysql-field-name-from-variable
Kcko
Profil
Tori:
Díky, ale je to fakt krkolomnost. (Chtěl jsem to jako rychlý fix, normálně bych si napsal servisu do Nette a pustil to v PHPku, takhle jsem holt jen přepisoval SQL na 2 místech .. a proto jsem si řekl, že to ještě zjednodušším přes proměnnou a budu to přepisovat na 1 místě).

Kajman:
Podívám se, ale taky to není uplně to co jsem chtěl ;-)) , myslel jsem to tak, že použiji na proměnnou nějakou funkci, něbo ji nějak "oescapuji" abych databázi řekl, že chci hodnotu z toho daného sloupce a ne jako string.

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:

0