Attribute replacen statt alle zu setzen

Hey, ich habe ein dickes Problem.

Wir haben ~300 Artikel. Innerhalb der 300 Artikel gibt es 3 Größen, also 3 verschiedene Artikel.

Nun ändern sich die jeweiligen Größen (Attribut 1)…

Jetzt haben wir da immer folgendes drin stehen „50x125 cm“ als Beispiel für einen Artikel. Das soll jetzt aber „50x120 cm“ sein.

Via Mehrfachänderung gibt es keine Replace-Möglichkeit. In der Mysql-Tabelle s_articles stehen leider keine Attribute, die Datenbank generell ist ja sehr verschachtelt…

Wie bekomme ich das nun hin, ohne jeden einzelnen Artikel anzupassen?

 

Gibt es irgendeine MySQL-Abfrage?..

Vielen Dank…

 

Liebe Grüße,

René

 

 

Nachtrag: Konnte in s_articles_attributes jetzt in der MySQL alles ändern (NUR, weil wir keine anderen Artikel mit der Größe haben)

UPDATE s_articles_attributes
SET attr1 = REPLACE(attr1, ‚100x125 cm‘, ‚100x120 cm‘)

 

Gibt es auch eine Lösung, eine Abfrage zu machen, ob im Titel ein xxx vorkommt und nur da zu Replacen? Der Titel steht ja leider in einer anderen Tabelle…

Über die „articleID“ könnte man eine Verbindung zur Tabelle „s_articles“ herstellen und dann mittels WHERE den Titel des Artikels abfragen.

UPDATE s_articles_attributes ab, s_articles a
SET ab.attr1 = REPLACE(ab.attr1, '100x125 cm', '100x120 cm')
WHERE a.id = ab.articleID
AND a.name LIKE '%test%'

UNGETESTET!

1 „Gefällt mir“

Sehr vielen Dank, diese Verknüpfung bekam ich nicht hin, du bist ein Held, danke! <3

UPDATE s_articles_attributes ab, s_articles_details ad, s_articles a
SET ab.attr1 = REPLACE(ab.attr1, 'normal', 'unnormal')
WHERE ad.id = ab.articledetailsID 
AND a.id = ad.articleID 
AND a.name LIKE '%test%'

So ist es vielleicht besser …

1 „Gefällt mir“

Klappt das Prinzip auch bei Varianten?

Ich sehe gerade, dass es die Maße ja auch noch gibt…

 

Es gibt jeweils nur die eine Größe, also nur diese Variante. Kann man das via Abfrage genau so ersetzen?

Vorher ein Backup von der Datenbank machen und ausprobieren :slight_smile:

Ja, die Frage ist jedoch, in welcher Tabelle finde ich die Varianten von Artikeln? :slight_smile:

Finde dazu keine passende Tabelle. Da müssten ja die IDs mit den Varianten drin stehen.

 

Gruß

 

 

Edit: Ist es s_article_configurator_options? Kann ich da einfach alte Maße durch neue Maße ersetzen und im Frontend wird mir in der Combobox dann der neue Wert angezeigt?

Ich weiß gar nicht warum die Größen bei euch bei Attribute stehen. Das sind eigentlich Optionen und würden deshalb an ganz anderer Stelle stehen. Die Varianten sind zusätzliche Einträge bei “s_articles_details”, man erkennt sich an den Artikelnummern. Ggf. müsste das Query umgebaut werden. Ich habe das jetzt aus Zeitgründen nicht alles getestet.

Wir haben Varianten aktiviert, für den Fall, dass neue Größen dazukommen:

 

Das müsste ich irgendwie in der Datenbank ändern. Irgendwo muss ja Breite und Höhe in der Datenbank definiert sein, dann könnte man das ja ändern…

Ohje, jetzt gehts durcheinander. Oben hast du etwas von Attributen geschrieben. Deine Breite und Höhe ist aber etwas anderes. Diese stehen in der Tabelle „s_articles_details“.

Wenn du sicher bist, welche Werte du ersetzen willst, kann du mit einem Select ja erst einmal testen, ob auch die richtigen ermittelt:

SELECT a.name, ad.ordernumber, ad.width, ad.height
FROM s_articles_details ad, s_articles a
WHERE a.id = ad.articleID 
AND a.name LIKE '%test%' 
AND ad.height = 125

Dann bekommst du eine Übersicht von allen Artiklen wo im Name “test” und wo die Höhe “125” ist. Wenn diese Abfrage soweit ok ist, dann dieses Query auf Update umstellen:

UPDATE s_articles_details ad, s_articles a
SET ad.height = REPLACE(ad.height, '125', '120')
WHERE a.id = ad.articleID 
AND a.name LIKE '%test%' 
AND ad.height = 125

bzw. auch:

UPDATE s_articles_details ad, s_articles a
SET ad.height = 120 
WHERE a.id = ad.articleID 
AND a.name LIKE '%test%' 
AND ad.height = 125

… mal so als Beispiel …

1 „Gefällt mir“

Danke, das hilft zwar schon weiter, aber im Dropdown-Menü bleibt 125 bestehen, obwohl nun in der Tabelle schonmal überall 120 steht :confused:

 

 

Wo ist das denn noch deklariert?

 

Gruß :slight_smile:

Am besten nach solchen Änderungen den Cache mal leeren. Möglich, dass es von ihm kommt.

Das habe ich schon 2x, leider ohne Erfolg. Er nimmt die Maße halt aus der Variante, da müsste man das irgendwie ändern…