Leere Kategorien löschen ca. 50.000

allHardware

Aktives Mitglied
24. Juli 2015
80
1
Bruckmühl
Hallo,

ich habe natürlich schon viele Beiträge dazu gefunden, nur überall steht, man kann nicht mehrere Kategorien gleichzeitig löschen. Dass wäre ja total eigenartig, bei so einem
Programm.
Ich müsste ca. 50.000 (eher mehr) Kategorien löschen, einfach alle die leer sind.

Ich hoffe, Ihr könnt mir sagen wie das funktioniert. :)
Vielen Dank schon mal!!!

Grüße
Helga

P.S. Wawi 1.0.10.1 Datenbank Lokal.
 

tafechner

Offizieller Servicepartner
SPBanner
31. Juli 2010
782
102
Berlin
AW: Leere Kategorien löschen ca. 50.000

Hallo, das kann man nur mit dem SQL Management Studio SQL Befehl, hier sollte es aber jemand vornehmen der davon Ahnung hat und Grundsätzlich immer eine DB Sicherung machen. Gruß aus Berlin
 

allHardware

Aktives Mitglied
24. Juli 2015
80
1
Bruckmühl
AW: Leere Kategorien löschen ca. 50.000

Nein, es sind auch Unterkategorien z.B.

Löschen:
Arbeitsspeicher - Notebook - Acer - Aspire - V5 - 573g

Nicht löschen:
Arbeitsspeicher - Notebook - Acer - Aspire - V5 - 573g - ARTIKEL

Also bis man zu den Speichern von Acer Aspire V5-573g kommt sind es 6 Kategorien. Das hab ich so aufgebaut, damit die Kunden im Shop Ihr Gerät finden.
Ich bräuchte also einen Befehl, der alle Kategorien wo auch in den Unterkategorien keine Artikel kommt, löscht.

Grüße Helga
 

tafechner

Offizieller Servicepartner
SPBanner
31. Juli 2010
782
102
Berlin
AW: Leere Kategorien löschen ca. 50.000

es gab früher mal hier im Forum ein Thema SQL Befehle, dieser wurde wieder gelöscht und das aus gutem Grund. Wenn Du nicht weißt wie so ein Befehl im SQLMS aussieht dann solltest Du das auch nicht allein machen bzw. sollte hier der Code nicht veröffentlicht werden. Wir höhren öfters von Kunden " bei mir funktioniert irgendetwas nicht" Schxxxß WAWI "Ich hab nix gemacht" und dann wurde von Unwissende einfach am SQL gespielt. Also wende Dich an Deinen SP der hilft bestimmt, naja es gibt welche. :) die das können. Gruß aus Berlin.
 

fav-hosting.online

Sehr aktives Mitglied
16. Oktober 2012
780
59
Weiterstadt
Firma
FaV-Hosting
AW: Leere Kategorien löschen ca. 50.000

Mit unten stehendem Code kannst du dir die Anzahl Artikel inkl. der Anzahl Artikel in den Unterkategorien anzeigen lassen.
Bitte prüfe mal nach ob diese Kategorien auch leer sind, dann kann ich dir per PN noch die Zeile schicken um die Kategorien auf Inaktiv zu setzen.
Danach musst du dann nur noch über die JTL-Datenbankbereinigung die Inaktiven Kategorien löschen.

Code:
DECLARE @kHauptKategorie int
DECLARE @kKategorie int
DECLARE @cName varchar(255)
DECLARE @kKategoriefirst int
DECLARE @nAnzahlArtikel int
DECLARE @cPath varchar(max)
DECLARE @cPathReadable varchar(max)

CREATE TABLE #Temp
(
    kKategorie int, 
    cReadable varchar(max),
    cPath varchar(max), 
    nAnzahlArtikel int
)

DECLARE hkat_cursor CURSOR FOR
SELECT tKategorie.kKategorie, kOberkategorie, tKategorie.kKategorie, cName FROM tKategorie INNER JOIN tKategorieSprache ON tKategorie.kKategorie = tKategorieSprache.kKategorie WHERE kShop = 0 AND kPlattform = 1;
OPEN hkat_cursor;

-- Perform the first fetch.
FETCH NEXT FROM hkat_cursor INTO @kHauptKategorie, @kKategorie, @kKategoriefirst, @cName;
WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO #Temp (kKategorie) VALUES (@kHauptKategorie);
    SET @cPath = CAST(@kHauptKategorie AS varchar(max)) + '/';
    SET @cPathReadable = CAST(@cName AS varchar(max)) + '/';
    WHILE(@kKategorie != 0)
    BEGIN
        SELECT  @kHauptKategorie = tKategorie.kKategorie, @kKategorie = kOberKategorie, @cName = cName FROM tkategorie INNER JOIN tKategorieSprache ON tKategorie.kKategorie = tKategorieSprache.kKategorie WHERE kShop = 0 AND kPlattform = 1 AND tKategorie.kKategorie = @kKategorie
        SET @cPath = CAST(@kHauptKategorie AS varchar(max)) + '/' + @cPath;
        SET @cPathReadable = CAST(@cName AS varchar(max)) + '/' + @cPathReadable;
    END
    UPDATE #Temp SET cPath = @cPath, cReadable = @cPathReadable WHERE kKategorie = @kKategoriefirst;
    FETCH NEXT FROM hkat_cursor INTO @kHauptKategorie, @kKategorie, @kKategoriefirst, @cName;
END
CLOSE hkat_cursor;
DEALLOCATE hkat_cursor;

DECLARE artikel_cursor CURSOR FOR
SELECT kKategorie, cPath FROM #Temp;
OPEN artikel_cursor;
FETCH NEXT FROM artikel_cursor INTO @kKategorie, @cPath;
WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @nAnzahlArtikel =  COUNT(kArtikel) FROM tKategorieArtikel INNER JOIN #Temp ON #Temp.kKategorie = tKategorieArtikel.kKategorie WHERE cPath LIKE @cPath + '%';
    UPDATE #Temp SET nAnzahlArtikel = @nAnzahlArtikel WHERE kKategorie = @kKategorie;
    FETCH NEXT FROM artikel_cursor INTO @kKategorie, @cPath;
END
CLOSE artikel_cursor;
DEALLOCATE artikel_cursor;
SELECT * FROM #Temp;
DROP TABLE #Temp;
 

bzng

Gut bekanntes Mitglied
25. April 2014
132
11
AW: Leere Kategorien löschen ca. 50.000

Mit unten stehendem Code kannst du dir die Anzahl Artikel inkl. der Anzahl Artikel in den Unterkategorien anzeigen lassen.
Bitte prüfe mal nach ob diese Kategorien auch leer sind, dann kann ich dir per PN noch die Zeile schicken um die Kategorien auf Inaktiv zu setzen.
Danach musst du dann nur noch über die JTL-Datenbankbereinigung die Inaktiven Kategorien löschen.

Code:
DECLARE @kHauptKategorie int
DECLARE @kKategorie int
DECLARE @cName varchar(255)
DECLARE @kKategoriefirst int
DECLARE @nAnzahlArtikel int
DECLARE @cPath varchar(max)
DECLARE @cPathReadable varchar(max)

CREATE TABLE #Temp
(
    kKategorie int, 
    cReadable varchar(max),
    cPath varchar(max), 
    nAnzahlArtikel int
)

DECLARE hkat_cursor CURSOR FOR
SELECT tKategorie.kKategorie, kOberkategorie, tKategorie.kKategorie, cName FROM tKategorie INNER JOIN tKategorieSprache ON tKategorie.kKategorie = tKategorieSprache.kKategorie WHERE kShop = 0 AND kPlattform = 1;
OPEN hkat_cursor;

-- Perform the first fetch.
FETCH NEXT FROM hkat_cursor INTO @kHauptKategorie, @kKategorie, @kKategoriefirst, @cName;
WHILE @@FETCH_STATUS = 0
BEGIN
    INSERT INTO #Temp (kKategorie) VALUES (@kHauptKategorie);
    SET @cPath = CAST(@kHauptKategorie AS varchar(max)) + '/';
    SET @cPathReadable = CAST(@cName AS varchar(max)) + '/';
    WHILE(@kKategorie != 0)
    BEGIN
        SELECT  @kHauptKategorie = tKategorie.kKategorie, @kKategorie = kOberKategorie, @cName = cName FROM tkategorie INNER JOIN tKategorieSprache ON tKategorie.kKategorie = tKategorieSprache.kKategorie WHERE kShop = 0 AND kPlattform = 1 AND tKategorie.kKategorie = @kKategorie
        SET @cPath = CAST(@kHauptKategorie AS varchar(max)) + '/' + @cPath;
        SET @cPathReadable = CAST(@cName AS varchar(max)) + '/' + @cPathReadable;
    END
    UPDATE #Temp SET cPath = @cPath, cReadable = @cPathReadable WHERE kKategorie = @kKategoriefirst;
    FETCH NEXT FROM hkat_cursor INTO @kHauptKategorie, @kKategorie, @kKategoriefirst, @cName;
END
CLOSE hkat_cursor;
DEALLOCATE hkat_cursor;

DECLARE artikel_cursor CURSOR FOR
SELECT kKategorie, cPath FROM #Temp;
OPEN artikel_cursor;
FETCH NEXT FROM artikel_cursor INTO @kKategorie, @cPath;
WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @nAnzahlArtikel =  COUNT(kArtikel) FROM tKategorieArtikel INNER JOIN #Temp ON #Temp.kKategorie = tKategorieArtikel.kKategorie WHERE cPath LIKE @cPath + '%';
    UPDATE #Temp SET nAnzahlArtikel = @nAnzahlArtikel WHERE kKategorie = @kKategorie;
    FETCH NEXT FROM artikel_cursor INTO @kKategorie, @cPath;
END
CLOSE artikel_cursor;
DEALLOCATE artikel_cursor;
SELECT * FROM #Temp;
DROP TABLE #Temp;

Hey, könntest du mir die Zeile per PN schicken, die die leeren Kategorien auf inaktiv setzt?

Danke! :)
 

allHardware

Aktives Mitglied
24. Juli 2015
80
1
Bruckmühl
AW: Leere Kategorien löschen ca. 50.000

Hey, könntest du mir die Zeile per PN schicken, die die leeren Kategorien auf inaktiv setzt?

Danke! :)


Der Support hat mir über TeamViewer die Kategorien alle gelöscht. Hier der Code:

SELECT *
FROM tKategorie
LEFT JOIN dbo.tkategorieartikel ON dbo.tKategorie.kKategorie =
tkategorieartikel.kKategorie
LEFT JOIN dbo.tkategorie AS Kindkategorie ON dbo.tKategorie.kKategorie =
Kindkategorie.kOberKategorie
WHERE dbo.tkategorieartikel.kKategorie IS NULL AND Kindkategorie.kKategorie IS
NULL


DELETE tKategorie
FROM tKategorie
LEFT JOIN dbo.tkategorieartikel ON dbo.tKategorie.kKategorie =
tkategorieartikel.kKategorie
LEFT JOIN dbo.tkategorie AS Kindkategorie ON dbo.tKategorie.kKategorie =
Kindkategorie.kOberKategorie
WHERE dbo.tkategorieartikel.kKategorie IS NULL AND Kindkategorie.kKategorie IS
NULL

Grüße Helga
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.083
335
AW: Leere Kategorien löschen ca. 50.000

Hi,

nur um das an der Stelle klar zu stellen: Wenn der Support SQL Befehle auf Eurem System absetzt, dann welche, die auf das spezielle Problem abgestimmt sind. Diese sind NICHT für die Allgemeinheit gedacht und sollten bitte wirklich nicht ohne Hintergrundwissen ausprobiert werden. Insbesondere keine DELETE oder UPDATE Befehle.

Gruß,
Sebastian
 

allHardware

Aktives Mitglied
24. Juli 2015
80
1
Bruckmühl
AW: Leere Kategorien löschen ca. 50.000

Hi,

nur um das an der Stelle klar zu stellen: Wenn der Support SQL Befehle auf Eurem System absetzt, dann welche, die auf das spezielle Problem abgestimmt sind. Diese sind NICHT für die Allgemeinheit gedacht und sollten bitte wirklich nicht ohne Hintergrundwissen ausprobiert werden. Insbesondere keine DELETE oder UPDATE Befehle.

Gruß,
Sebastian

Hallo Sebastian,

der Herr am Telefon hat mir aber gesagt, dass ich das immer nutzen kann deshalb hat ER es mir extra abgespeichert. Er meinte auch das es kein besonderer Befehl ist, der hat auch nichts auf meinem System angeschaut, eingeloggt, eingefügt, auf ausführen gedrückt und schon wieder aufgelegt. Daher dachte ich das ich diesen Befehl hier Posten kann, wenn das nicht der Fall ist dann löscht den Beitrag bitte wieder.

Grüße
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL Shop 5 Daten - In "leere" JTL Wawi Datenbank importieren - Ist das möglich? User helfen Usern - Fragen zu JTL-Wawi 8
Artikel per Ameise mehreren Kategorien zuordnen - Artikeldatenimport in WaWi nicht mehr vorhanden JTL-Wawi 1.8 6
Neu Suche nur in Kategorien anstatt Artikel Allgemeine Fragen zu JTL-Shop 0
Neu Einem bzw. mehreren Artikeln über den Import mehrere Kategorien zuordnen JTL-Wawi 1.7 1
Neu Kategorien werden nach Datenimport nicht automatisch abgeglichen Shopware-Connector 0
Neu MediaSaturn SCX / Kategorien werden nicht angezeigt Einrichtung und Installation von JTL-eazyAuction 0
Artikelbegrenzung Kategorien JTL-Wawi 1.8 0
Neu Zugang zu Kategorien nur per Kennworteingabe Plugins für JTL-Shop 3
Neu Neu erstellte Kategorien werden nicht mehr im Megamenue & Kategoriebaum angezeigt Betrieb / Pflege von JTL-Shop 7
Neu SEO URL der Kategorien wird nicht an Shopware 6 übertragen Shopware-Connector 0
In Diskussion Automatische Zuweisung der Kategorien für Artikel durch Workflow JTL-Workflows - Ideen, Lob und Kritik 3
Neu WAWI Kategorien werden im Shop nicht angezeigt Gelöste Themen in diesem Bereich 3
Neu Gruppierung im Megamenü unabhängig von Kategorien Allgemeine Fragen zu JTL-Shop 0
Neu Das leidige Thema Kategorien Shopify-Connector 3
Neu Rabatt für Kunde auf bestimmte Kategorien Arbeitsabläufe in JTL-Wawi 0
Neu Kategorien werden nicht abgeholt Shopware-Connector 0
Neu Unterkategorien oder zumindest Artikel in Kategorien kopieren? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Frage zu Shopify Kategorien Shopify-Connector 1
Neu Löschen von Nachrichten im Servicedesk Servicedesk (Beta) 3
Neu Gefahrlos Testkunden aus tkunde löschen? Umstieg auf JTL-Shop 1
Neu Pickliste löschen User helfen Usern - Fragen zu JTL-Wawi 0
Neu Alle Produktbilder in Shopify aus JTL löschen Shopify-Connector 0
In Diskussion CustomWorkflow löschen bzw. ändern JTL-Workflows - Ideen, Lob und Kritik 3
Neu Ist es möglich per Ameise Kunden zu löschen? Arbeitsabläufe in JTL-Wawi 2
Rechnungen löschen JTL-Wawi 1.7 1
Kundengruppe löschen JTL-Wawi 1.7 6
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu Warenkorb nach X Tagen löschen JTL-Shop - Ideen, Lob und Kritik 2
Neu keine Zahlung vom Kunden -- Auftrag stornieren oder löschen? Gelöste Themen in diesem Bereich 3

Ähnliche Themen