# Artikelvarianten aktivieren per SQL-Befehl

**URL:** <https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136>\
**Category:** Programmierung\
**Created:** [6. Juni 2021 um 12:09 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136 "2021-06-06T12:09:35Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [6. Juni 2021 um 12:09 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/1 "2021-06-06T12:09:35Z")

</div>

Liebe Community,

Unser Kunde hat Hauptartikel mit sehr vielen (hunderten) Varianten.  
Ich muss jetzt bei allen Varianten die Lager auf z.B. 2 setzten (stock & available\_stock) sowie die Varianten dann noch aktivieren.

Der SQL Befehl für das Lager hat perfekt funktioniert:

```auto
UPDATE product SET stock = '2' WHERE product_number LIKE 'SW10060.%'
UPDATE product SET available_stock = '2' WHERE product_number LIKE 'SW10060.%'

```

Bei der Aktivierung der Variante komme ich aber mit diesem Befehl nicht durch. Es ergibt einfach kein Resultat aber auch keine Fehlermeldung.

```auto
UPDATE product SET active = '1' WHERE product_number LIKE 'SW10060.%'

```

Hat jemand eine Idee woran das liegen könnte?  
Schöne Grüsse aus der Schweiz

---

<div class="post-metadata">

**Author:** ![tarkka.ch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/tarkka.ch/32/13452_2.png) [@tarkka.ch](https://forum.shopware.com/u/tarkka.ch)\
**Post date:** [7. Juni 2021 um 06:44 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/2 "2021-06-07T06:44:08Z")

</div>

Was zeigt er den, wenn Du Dir die Resultate für product\_number wie oben und where active = ‚0‘ anzeigen lässt?

Grüsse aus der Schweiz

Alfred

---

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [7. Juni 2021 um 08:32 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/3 "2021-06-07T08:32:53Z")

</div>

Hi Alfred,

In unserem Fall ist in der Ausgangslage active „NULL“. Wie im Printscreen ersichtlich zeigt es 164 Datensätze, wenn ich diese einfach abfragen will:

```auto
SELECT * FROM `product` WHERE `product_number` LIKE 'SW10060.%' AND `active` IS NULL

```

Das Update der 164 Datensätze hingegen zeigt 0 gefundene Zeilen in der Simulation:

```auto
UPDATE `product` SET active = '1' WHERE `product_number` LIKE 'SW10060.%' AND `active` is NULL

```

 ![Bildschirmfoto 2021-06-07 um 10.23.44](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/0/0d9c13c758f69b6b6543b01b02d9bbf1c9beabd0.png)

---

<div class="post-metadata">

**Author:** ![tarkka.ch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/tarkka.ch/32/13452_2.png) [@tarkka.ch](https://forum.shopware.com/u/tarkka.ch)\
**Post date:** [7. Juni 2021 um 09:04 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/4 "2021-06-07T09:04:05Z")

</div>

Wir hatten hier letzthin auch das Problem, dass man „product“ aus einer Wawi nicht mit Daten befüllen kann. Ist aber noch nicht gelöst, da nicht dringend.

Wir vermuten ein Rechteproblem.

---

<div class="post-metadata">

**Author:** ![UhrenZietz](https://avatars.discourse-cdn.com/v4/letter/u/3ec8ea/32.png) [@UhrenZietz](https://forum.shopware.com/u/UhrenZietz)\
**Post date:** [7. Juni 2021 um 18:16 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/5 "2021-06-07T18:16:14Z")

</div>

Guten Abend!

Ich verstehe nicht ganz das Problem. Das Feld active ist vom Typ tinyint (also 0-255). Warum schreibt Ihr dann mit Anführungszeichen, die sind doch eigentlich für Textwerte?

in meinen Augen wäre logischer  
Update product set „active“ = 1 where („active“ is null) and („product\_number“ like „SW10060.%“);

Das Ganze natürlich mit einfachen Hochkommas geschrieben.

---

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [7. Juni 2021 um 21:30 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/6 "2021-06-07T21:30:42Z")

</div>

Vielen Dank für den Tipp. Leider bringt das auch das gleiche Resultat. Ich denke es hat damit zu tun, dass die Varianten den Status „active“ des Hauptartikels erben. In unserem Fall aber bringt eine Anpassung auf dem Hauptartikel ebenfalls keine Veränderung auf den Status der Varianten (was auch durchaus logisch erscheint). Wenn ich diese Abhängigkeit im Backend von SW6.4 mit dem Klick auf die Kette löse, dann kann ich genau diese Artikel auch mittels SQL-Befehl ändern. Mehrere hundert Varianten im Backend einzeln anklicken kann auch nicht die Lösung sein.

Die Frage ist nun, in welcher Tabelle diese Abhängigkeit vom „active“ Status der Varianten zum Hauptartikel definiert ist und wie dieser mittels SQL gelöst werden kann. Ich denke, dass dies auch die Lösung für das von tarkka.ch beschriebene Problem wäre.

 ![Bildschirmfoto 2021-06-07 um 23.23.35](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/2/2dd4a89674ff4fc9ab917d34e2b1617056e716f8.png)

---

<div class="post-metadata">

**Author:** ![tarkka.ch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/tarkka.ch/32/13452_2.png) [@tarkka.ch](https://forum.shopware.com/u/tarkka.ch)\
**Post date:** [8. Juni 2021 um 06:52 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/7 "2021-06-08T06:52:46Z")

</div>

Was steht denn bei Dir unter „properties“ in der gleichen Tabelle?

---

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [8. Juni 2021 um 08:23 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/8 "2021-06-08T08:23:11Z")

</div>

Here we go:

 ![Bildschirmfoto 2021-06-08 um 10.21.22](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/c/cc08286b7a12f78bf6049584066f96ee070058e3.png)

---

<div class="post-metadata">

**Author:** ![tarkka.ch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/tarkka.ch/32/13452_2.png) [@tarkka.ch](https://forum.shopware.com/u/tarkka.ch)\
**Post date:** [8. Juni 2021 um 08:46 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/9 "2021-06-08T08:46:05Z")

</div>

Und jetzt ist das Problem gelöst?

---

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [8. Juni 2021 um 09:13 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/10 "2021-06-08T09:13:08Z")

</div>

Nein, leider nicht. Solange eine Variante den „active“ Status vererbt erhalten bekommt, kann keine Massenmutation via SQL gemacht werden. Vielleicht hat jemand von Shopware selbst noch eine Lösung dazu? Im Moment müssten wir immer noch mehrere hundert Varianten im Backend einzeln manuell anklicken.

---

<div class="post-metadata">

**Author:** ![Adrian02](https://avatars.discourse-cdn.com/v4/letter/a/91b2a8/32.png) [@Adrian02](https://forum.shopware.com/u/Adrian02)\
**Post date:** [8. Juni 2021 um 09:26 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/11 "2021-06-08T09:26:52Z")

</div>

Da häng ich mich doch rein … hier das gleiche Problem … stock geht … active nicht … in der Roadmap steht zwar das soll jetzt endlich umgesetzt werden mit der „Massenänderung“ aber ich will nicht solange warten müssen 😉 Hilfe!

---

<div class="post-metadata">

**Author:** ![tarkka.ch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/tarkka.ch/32/13452_2.png) [@tarkka.ch](https://forum.shopware.com/u/tarkka.ch)\
**Post date:** [8. Juni 2021 um 09:34 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/12 "2021-06-08T09:34:50Z")

</div>

Vielleicht kann @Moritz_Naczenski etwas Licht ins Dunkel bringen?

---

<div class="post-metadata">

**Author:** ![UhrenZietz](https://avatars.discourse-cdn.com/v4/letter/u/3ec8ea/32.png) [@UhrenZietz](https://forum.shopware.com/u/UhrenZietz)\
**Post date:** [8. Juni 2021 um 10:05 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/13 "2021-06-08T10:05:13Z")

</div>

Das wird schon per SQL gehen … wenn ich mir ein ähnliches Beispiel ansehe,vermutlich Shopware 5, brauchte es da etwas mehr Tabellen im Update-Befehl

[https://shopdoktor.com/shopware/anleitungen/shopware-sql-inhalt-einer-variante-von-optionsname-der-variante-ableiten/](https://shopdoktor.com/shopware/anleitungen/shopware-sql-inhalt-einer-variante-von-optionsname-der-variante-ableiten/)

Bei einer aktivierbaren Vererbung von Eigenschaften (bei Varianten) kann es einfach nicht in „product“ stehen.

Dafür brauchen man eigentlich (geht am schnellsten) ein Datenbankschema um zu sehen, welche Tabellen voneinander abhängen und wie sie mit Foreign-Keys miteinander verbunden sind.

---

<div class="post-metadata">

**Author:** ![max.penth](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@max.penth](https://forum.shopware.com/u/max.penth)\
**Post date:** [8. Juni 2021 um 11:08 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/14 "2021-06-08T11:08:13Z")

</div>

active = 1 (das ist ein int-field)

„active“ nicht in Anführungszeichen, weder beim set, noch im where.

Dann sollte das auch funktionieren.

Die Vererbungslogik ist simpel: Feld = null → erbt vom parent. Feld != null → Keine Vererbung

---

<div class="post-metadata">

**Author:** ![UBIQ\_AG](https://avatars.discourse-cdn.com/v4/letter/u/7c8e57/32.png) [@UBIQ\_AG](https://forum.shopware.com/u/UBIQ_AG)\
**Post date:** [8. Juni 2021 um 13:38 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/15 "2021-06-08T13:38:56Z")

</div>

Lieben Dank an alle, die sich hier reinhängen!!

Leider bringt der Ansatz von @max.penth keine Lösung. Auch dieser Code ohne Anführungszeichen bringt 0 Resultate:

```auto
UPDATE product SET active = 1 WHERE product_number LIKE 'SW10060.%'

```

Der Ansatz von @UhrenZietz scheint mir plausibel. Das Schema ist allerdings von SW5. Wäre jemand in der Lage das auf auf SW6.4 zu „übersetzen“?

---

<div class="post-metadata">

**Author:** ![moschadr](https://avatars.discourse-cdn.com/v4/letter/m/65b543/32.png) [@moschadr](https://forum.shopware.com/u/moschadr)\
**Post date:** [13. Oktober 2021 um 07:48 UTC](https://forum.shopware.com/t/artikelvarianten-aktivieren-per-sql-befehl/88136/16 "2021-10-13T07:48:34Z")

</div>

Hallo,  
auch wenn der Beitrag schon etwas älter ist, ein möglicher, bei mir funktionierender Workaround ist folgender. Weil lesen und updaten zeitgleich auf die selbe Tabelle nicht möglich ist …

1. View erstellen mit „CREATE OR REPLACE ALGORITHM=TEMPTABLE SQL SECURITY DEFINER VIEW `myProductView` AS SELECT \* from `product`;“
2. Update starten für z.B. nur das Hauptprodukt (nicht die Variante)  
„UPDATE product SET active = 1 WHERE id IN (SELECT mpv.parent\_id FROM myProductView AS mpv WHERE mpv.product\_number = ‚meineNummer‘);“

Wenn die Varianten angepasst werden sollen, muss das Statement für das Update umgeschrieben werden. Danach ggf. im Backend den Cache leeren und die Indexe neu erstellen lassen.

Gruß
