Leere Kategorien löschen ca. 50.000

allHardware

Aktives Mitglied
24. Juli 2015
80
2
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
800
116
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
2
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
800
116
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
60
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
139
13
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
2
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
 
  • Ich liebe es
Reaktionen: DITH-Shop

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.084
339
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
2
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
 

DITH-Shop

Sehr aktives Mitglied
8. Juli 2013
2.855
212
AW: Leere Kategorien löschen ca. 50.000



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
AW: Leere Kategorien löschen ca. 50.000




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
Genau das brauchte ich heute - und es funktioniert ohne Änderungen auch für die V1.10.10.3
knapp 800 gelöschte Kategorien - und endlich aufgeräumte Wawi
Da es einen zugehörigen Trigger gibt, wird die Löschung auch an den Shop weitergeleitet
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Labeldrucker & Win11 - druck leere Etiketten... User helfen Usern 0
Neu Leere Suche – Ergebnis definieren mit Doofinder User helfen Usern - Fragen zu JTL-Wawi 0
Liste exportieren mit Kategorien und Anzahl der Artikel in der jeweiligen Kategorie JTL Ameise - Eigene Exporte 3
Neu Amazon Lister 2.0 Kategoriespezifische Felder fehlen bei vielen Kategorien Amazon-Lister - Fehler und Bugs 2
Neu Blog nur maximal 3 Kategorien Tiefe? Allgemeine Fragen zu JTL-Shop 2
Neu Kategorien zu Verkaufskanälen zuordnen User helfen Usern 0
Neu cDiscount Kategorien User helfen Usern 1
Neu Kategorien per Ameise importieren Schnittstellen Import / Export 8
API QueryItems mit Herstellern oder Kategorien bringt nichts JTL-Wawi 1.10 0
Neu Blog Kategorien nicht auswählbar JTL-Shop - Fehler und Bugs 5
Alte Amazon Aufträge lassen sich nicht löschen JTL-Wawi 1.11 0
Externe Belege löschen / VCS Bug JTL-Wawi 1.11 0
Neu Versandgruppe aus Verkaufskanalverwaltung - Amazon löschen funktioniert nicht JTL-Wawi - Fehler und Bugs 0
Neu Kundengruppe per SQL löschen User helfen Usern - Fragen zu JTL-Wawi 3
"Geisterplattformen" löschen bzw wo werden die einzelnen Plattformen gespeichert? JTL-Wawi 1.10 1
Neu Artikel lassen sich nicht aus Shopify Store löschen Shopify-Connector 4
Neu Artikelbilder / Bilder massenweise aktivieren / deaktivieren / löschen JTL-Wawi - Ideen, Lob und Kritik 3
Neu tWarenkorbpos und tBestellung älter als 10 Jahre löschen JTL-Shop - Fehler und Bugs 0
Neu eBay Rahmenbedingungen löschen? Einrichtung und Installation von JTL-eazyAuction 1
alte Pending Aufträge löschen JTL-Wawi 1.10 1
OPC Spezialseite Versandinformationen Slider lässt sich nicht löschen/bearbeiten Einrichtung JTL-Shop5 1
Löschen von Verkaufskanal nicht möglich JTL-Wawi 1.10 5

Ähnliche Themen