Rijen kopieeren in tabel
Hallo,
De titel is misschien wat misleidend, maar kon niets passenders bedenken.
Ik heb een tabel met daarin de teksten van een producten (korte omschrijving, lange omschrijving titel en foto titel.
Nu ben ik zover dat ik de producten in een andere taal wil gaan maken.
De structuur van het tabel is als volgt:
podium_product_taal_id
intern (koppelt deze rij aan het product)
taal (geeft de taal van deze rij aan)
naam (naam van het artikel)
omschrijving (spreekt voor zich)
omschrijving_kort (spreekt voor zich)
prijsalt (om een artikel een speciale prijs te geven, zoals: vanaf 2 euro / prijs opvraagbaar etc etc)
Nu heb ik heel veel producten zonder omschrijving, alleen de titelnaam is anders.
Nu wil ik graag alle rijen waarvan taal='NL' gaan kopieeren naar taal='EN'
Volgens mij krijg ik dan zoiets als:
(Ik gebruik een test tabel genaamd podium_product_taal2, normaal heet dit tabel podium_product_taal
Maar dit werk niet goed.
edit:te snel op enter gedrukt, foutmelding komt eraan.
foutlmelding:
Toevoeging op 19/02/2013 23:03:09:
Ik heb het op een andere manier opgelost
In de structuur van het tabel heb ik de standaard warde van taal op EN gezet.
De titel is misschien wat misleidend, maar kon niets passenders bedenken.
Ik heb een tabel met daarin de teksten van een producten (korte omschrijving, lange omschrijving titel en foto titel.
Nu ben ik zover dat ik de producten in een andere taal wil gaan maken.
De structuur van het tabel is als volgt:
podium_product_taal_id
intern (koppelt deze rij aan het product)
taal (geeft de taal van deze rij aan)
naam (naam van het artikel)
omschrijving (spreekt voor zich)
omschrijving_kort (spreekt voor zich)
prijsalt (om een artikel een speciale prijs te geven, zoals: vanaf 2 euro / prijs opvraagbaar etc etc)
Nu heb ik heel veel producten zonder omschrijving, alleen de titelnaam is anders.
Nu wil ik graag alle rijen waarvan taal='NL' gaan kopieeren naar taal='EN'
Volgens mij krijg ik dan zoiets als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO podium_product_taal2
(
intern,
taal,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
taal =`EN`,
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = `NL`
(
intern,
taal,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
taal =`EN`,
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = `NL`
(Ik gebruik een test tabel genaamd podium_product_taal2, normaal heet dit tabel podium_product_taal
Maar dit werk niet goed.
edit:
foutlmelding:
Quote:
#1054 - Unknown column 'EN' in 'field list'
Toevoeging op 19/02/2013 23:03:09:
Ik heb het op een andere manier opgelost
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
INSERT INTO podium_product_taal2
(
intern,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = `NL`
(
intern,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = `NL`
In de structuur van het tabel heb ik de standaard warde van taal op EN gezet.
Gewijzigd op 19/02/2013 22:34:19 door J C
Nee de eerste INSERT vond ik beter, maar met een paar kleine aanpassingen:
Je moet geen backquotes om strings zetten. Backquotes gebruik je (optioneel) om kolom- en tabelnamen aan te geven. Strings horen in single quotes. Dus ook de laatste 'NL'. (MySQL accepteert overigens ook de double quote om strings aan te geven, maar dat is niet de SQL standaard.)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO podium_product_taal2
(
intern,
taal,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
'EN',
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = 'NL'
(
intern,
taal,
naam,
omschrijving,
omschrijving_kort,
prijsalt
)
SELECT
intern,
naam,
'EN',
omschrijving,
omschrijving_kort,
prijsalt
FROM
podium_product_taal2
WHERE
taal = 'NL'
Je moet geen backquotes om strings zetten. Backquotes gebruik je (optioneel) om kolom- en tabelnamen aan te geven. Strings horen in single quotes. Dus ook de laatste 'NL'. (MySQL accepteert overigens ook de double quote om strings aan te geven, maar dat is niet de SQL standaard.)
Je hebt helemaal gelijk (2 keer), ik had inderdaad gewoon deze insert kunnen gebruiken.
De backquotes worden op 1 of andere manier door phpmyadmin erin gezet. (ik had het gekopieerd.)
De backquotes worden op 1 of andere manier door phpmyadmin erin gezet. (ik had het gekopieerd.)
Gewijzigd op 20/02/2013 02:59:08 door J C




