MySQL: Alle inaktiven Artikel aktiv schalten -- aber nur in einer Kategorie

Hallo,

um es vorwegzunehmen: mein SQL ist nicht das Beste.
Ich weiß, wie ich im Shop alle Artikel, die auf inaktiv stehen, aktiv schalten kann per MySQL:

[B][I][SQL-Anweisung GELÖSCHT, weil, Blödsinn]
s. 1. Antwort, von AO; so ist’s richtig[/I][/B]

Nun möchte ich dasselbe nur für diejenigen Artikel machen, die in einer bestimmten Kategorie (“Neue Artikel”) eingestellt sind. Und nur für die. (Es befinden sich da noch einige uralte Zombies in der Datenbank, die seit Jahren ausverkauft sind; die sollen natürlich nicht wieder auf aktiv geschaltet werden.)

Da die Zugehörigkeit eines Artikels zur Kategorie ja in einer anderen Tabelle als der oxarticles abgelegt ist, weiß ich da nicht so recht weiter. Hat irgendwer da einen zauberhaften SQL-Befehl für mich? Das wäre toll.

Hallo,

Du hast es ja vorweggenommen.

Sei bitte vorsichtig mit solchen mySQL Befehlen. Der oben von Dir angegebene Befehl zum Aktivieren aller Artikel ist schon falsch und muss glaube ich

UPDATE oxarticles SET oxactive = 1

heißen.

Du hattest wohl die Syntax eines SELECT-Befehls kopiert und einfach select gegen update getauscht.

Gruß

Andreas

Du hast Recht. Das war Quatsch. Dein Befehl ist richtig. * Copy-Paste-Fehler. Mist. Ich habe es mal rausgenommen. Könnte bitte mal jemand dieses Wetter hier umstellen?

  • …wobei man da natürlich noch eine WHERE-Anweisung einbauen kann.

OK, ich schlaf weiter. Zwischen der Öffnung und des Absendens lag einfach zuviel Zeit.

Hallo,

damit Du weiterkommst, schau mal in der mySQL Dokumentation unter ‘Join’ nach und betrachte in der Datenbank mal die Tabellen ‘oxcategories’ und ‘oxobject2category’.

Gruß

Andreas

Mit Kanonen auf Spatzen:

UPDATE oxarticles SET oxactive = 1 where oxparentid = "" and oxid IN (SELECT oxobjectid from oxobject2category where oxcatnid = 'KATEGORIEID')

oxparentid bei Bedarf entfernen. KategorieID ist die oxid der Kategorie :wink: