| 

.NET C# Java Javascript Exception

2
Habe 3 SQL Tabellen (t1, t2, t3)
t1: t1_id (Key), t1_title
t2: t2-id (Key), t2_sku
t3: t3_t1_id (Key), t3_t2_id (key)
Möchte alle t2_sku in t1_title übertragen (updtaten)
23.02.2013
flor1946 3 1 2
4 Antworten
1
UPDATE t1 SET t1_title = t2.t2_sku
FROM t1
INNER JOIN t3 ON t1.t1_id = t3.t3_t1_id
INNER JOIN t2 ON t3.t3_t2_id = t2.t2_id
23.02.2013
commänder 420 1 7
Vielen Dank, aber FROM in UPDATE wird in MYSQL nicht akzeptiert
flor1946 24.02.2013
Stand ja nicht dabei, dass es für MySQL sein soll, im SQL Server geht es so ;-)
commänder 24.02.2013
Wissen sie ev. die Lösung mit MYSQL?
flor1946 24.02.2013
Ich habe die Lösung gefunden - SET muss nach den INNER JOIN sein!:

UPDATE `gwai_virtuemart_medias` t1

INNER JOIN `gwai_virtuemart_product_medias` t3
ON t1.`virtuemart_media_id` = t3.`virtuemart_media_id`
INNER JOIN `gwai_virtuemart_products` t2
ON t3.`virtuemart_product_id` = t2.`virtuemart_product_id`


SET t1.`file_title` = t2.`product_sku`
flor1946 08.03.2013
0
Hier meine neuste korrigierte SQL Sequenz:
UPDATE `gwai_virtuemart_medias`
SET `gwai_virtuemart_product_medias`.`file_title` = `gwai_virtuemart_products`.`product_sku`
INNER JOIN `gwai_virtuemart_product_medias`
ON `gwai_virtuemart_medias`.`virtuemart_media_id` = `gwai_virtuemart_product_medias`.`virtuemart_media_id`
INNER JOIN `gwai_virtuemart_products`
ON `gwai_virtuemart_product_medias`.`virtuemart_media_id` = `gwai_virtuemart_products`.`virtuemart_product_id`

Fehlermeldung:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'INNER JOIN `gwai_virtuemart_product_medias` ON `gwai_virtuemart_medias`.`virtue' at line 3
24.02.2013
flor1946 3 1 2
Vermutlich weil MySQL den Ausdruck als
gwai_virtuemart_medias.file - title = interpretiert was syntaktisch falsch ist.

Du musst die Tabellen/Spalen-Namen maskieren, etwa so:

UPDATE `gwai_virtuemart_medias`
SET `gwai_virtuemart_medias`.`file-title` = `gwai_virtuemart_products`.`product_sku` ...

Dann klappts auch mit unglücklich gewählten Tabellen-Namen...
phg 24.02.2013
Schonmal die Fehlermeldung genau gelesen? Ein Minuszeichen im Spaltennamen macht Probleme. Wenn die Spalte wirklich so heißt, dann musst du Hochkommata drum rum setzen.

Ansonsten kenn ich mich nicht so genau mit MySQL aus, daher weiß ich da nicht ob es die Syntax da gibt oder ob es da anders aussieht.
commänder 24.02.2013
Fehler:
UPDATE `gwai_virtuemart_medias`
SET `gwai_virtuemart_product_medias.file_title` = `gwai_virtuemart_products.product_sku`
INNER JOIN `gwai_virtuemart_product_medias`
ON `gwai_virtuemart_medias.virtuemart_media_id` = `gwai_virtuemart_product_medias.virtuemart_media_id`
INNER JOIN `gwai_virtuemart_products`
ON `gwai_virtuemart_product_medias.virtuemart_media_id` = `gwai_virtuemart_products.virtuemart_product_id`
Fehler:
#1064 - You have an error in your SQL ... use near 'INNER JOIN `gwai_virtuemart_product_medias` ON `gwai_virtuemart_me' at line 3
flor1946 25.02.2013
Die Backticks müssen um jeden Tabellen- bzw. Spalten-Namen gemacht werden, nicht um Beide zusammen.

Also statt `gwai_virtuemart_product_medias.file_title` müsste es `gwai_virtuemart_product_medias`.`file_title` heißen.

Das hier wird jetzt richtig unübersichtlich. Wie wäre es wenn du deine Frage editierst und zusätzlich die konkrete Tabellen-Definitionen dazu schreibst (bzw. kopierst)?
phg 26.02.2013
0
Wogegen der SELECT ein korrektes Resultat ergibt :

SELECT gwai_virtuemart_products.virtuemart_product_id t2_id, gwai_virtuemart_products.product_sku t2_sku, gwai_virtuemart_product_medias.virtuemart_product_id t3_id, gwai_virtuemart_product_medias.virtuemart_media_id t3medias, gwai_virtuemart_medias.virtuemart_media_id t1medias, gwai_virtuemart_medias.file_title t1file_title
FROM gwai_virtuemart_medias
INNER JOIN gwai_virtuemart_product_medias ON gwai_virtuemart_medias.virtuemart_media_id = gwai_virtuemart_product_medias.virtuemart_media_id
INNER JOIN gwai_virtuemart_products ON gwai_virtuemart_product_medias.virtuemart_product_id = gwai_virtuemart_products.virtuemart_product_id
LIMIT 0 , 2000
24.02.2013
flor1946 3 1 2
Ja, heißt die Spalte denn nun
gwai_virtuemart_medias.file-title
oder
gwai_virtuemart_medias.file_title
???
Matthias Hlawatsch 25.02.2013
Sorry, ja die Spalte heisst gwai_virtuemart_medias.file_title - vielen Dank
flor1946 25.02.2013
0
Sorry, ja die Spalte heisst gwai_virtuemart_medias.file_title - vielen Dank
25.02.2013
flor1946 3 1 2
Nutze für Deine Kommentare bitte auch die "Kommentar-Funktion". Wenn hier jemand eine Antwort bewertet, passt die Reihenfolge nicht mehr ...
Xantiva 25.02.2013
Entschuldigung - werde es zukünftig richtig machen - vielen Dank!
flor1946 25.02.2013

Stelle deine Mysql-Frage jetzt!