AW: Wer kann, gerne auch gegen Bezahlung, weiterhelfen? AW: Leere Kategorien löscjen
Hallo,
das sollte für einen erfahrenen Dienstleister eigentlich nicht sher schwierig zu lösen sein.
Ich befasse mich noch nicht sehr lange mit dem JTL, jedoch würde ich da so dran gehen:
1. Mit
"SELECT DISTINCT [kKategorie] FROM [eazybusiness].[dbo].[tkategorieartikel]"
würde ich ermittlen welche Kategorien belegt sind.
2. Mit
"SELECT DISTINCT [kKategorie] FROM [eazybusiness].[dbo].[tkategorie]"
würde ich dann alle Kategorien ermitteln die es gibt.
Daraus muss man jetzt eine Differenzliste ermitteln.
Fortgeschrittene würden das gleich mit nur einer Abfrage ermitteln:
SELECT DISTINCT tkategorie.kKategorie, tkategorie.cName
FROM tkategorie LEFT OUTER JOIN tkategorieartikel ON tkategorie.kKategorie = tkategorieartikel.kKategorie
WHERE tkategorieartikel.kKategorie IS NULL"
Diese Abfrage gibt alle Kategorie IDs und deren Namen zurück welche keine Artikel enthalten:
Nun muss man noch prüfen, ob es sich bei der leeren Kategorie um einen Parent handelt dessen Childs noch Artikel haben.
Wie man das mit TSQL abbilden weis ich nicht (vielleicht geht das nicht mal).
Ein Tool zu schreiben, welches alle IDs auf eine ChildID prüft und ermittelt ob sich darin noch Artikel befinden ist jedenfalls kein Hexenwerk.
Nun zum aufwendigeren Teil:
Jetzt einfach in der Tabelle [tkategorie] die Kategorien zu löschen wäre FATAL!
Die wären dann zwar weg und würden im JTL auch nicht mehr angezeigt werden, dennoch kommt es zu "leichen" in den anderen Tabellen weil Kategorien und deren Einstellungen über mehrere Tabellen verteilt sind.
Ich habe mir das mal eben mit dem SQL Profiler angeschaut (Kategorie aus dem JTL gelöscht und dabei im Profiler beobachtet was für Befehle an den SQL Server gesendet werden und welche Proceduren aufgerufen werden. Da ist schon einiges los. Da werden mehrere Tabellen in der Datenbank angesprochen und Daten daraus gelöscht. So auf anhieb, ohne mir das ganz genau anzuschauen waren das 4 Tabellen.
Das nach zu bilden ist aber auch kein Hexenwerk.
Das kostet "nur" Zeit und muss auch gut getestet sein. Wenn man das alles nachgebildet hat, kann man ein script erstellen das genau diese Befehle in der gleichen Reihenfolge an den Server "schickt" und somit ebenfalls eine Kategorie sauber löschen.
Wenn sich da 2-3-5 zusammen tun, kann man sicher einen Dienstleister damit beauftragen so ein Script zu erstellen und sich die Kosten die dabei entstehen "teilen".
Das sollte eigentlich erschwinglich sein und macht mehr Sinn als sich mehrmals im Jahr Stundenlang mit dem manuellen Löschen zu quälen....
So ein Script erledigt das in Sekunden wenn nicht so gar in millisec.
Auch würde das das JTL insgesamt auch wieder etwas nach vorne bringen.
Nesh