Neu Hersteller ohne verknüpfte Artikel ermitteln und löschen

Tobbe

Aktives Mitglied
28. Oktober 2020
72
9
Liebe Community,

ich konnte tatsächlich nichts finden im Forum zu meiner Frage. Deswegen mache ich ein neues Thema auf. Das Jahresende bietet sich an, um etwas "aufzuräumen". Ich möchte doppelte Herstellerangaben (z.B. mit Schreibfehler oder Varianten im Namen) zusammenfassen. Bsp. "Siemens", "SIEMENS", "Siemens AG" usw. Das lässt sich im Prinzip gut über die Ameise lösen:

  1. Artikeldaten mit Hersteller exportieren
  2. Excel (o. vergl.) zum Aufräumen nutzen
  3. Artikeldaten mit vereinheitlichten Herstellern wieder importieren

Jetzt möchte ich natürlich die "leeren" Hersteller, also Hersteller ohne verknüpfte Artikel löschen. Wie kann ich die ermitteln? Hat jemand eine Idee?

Um es gleich vorweg zunehmen: Ja, ich könnte auch ALLE Hersteller löschen, bevor ich die Artikeldaten wieder neu importiere. Das ist für meinen Fall aber nicht so einfach, weil ich über die WaWi mehrere Shops verwalte und ich diesen Vorgang nicht für alle gleichzeitig machen kann.

Ich freue mich über alle Hinweise!
Ach ja, und ... FROHE WEIHNACHTEN!
 

atzlich

Aktives Mitglied
6. Februar 2014
63
10
Hallo, ich bin auch gerade auf die Frage, Verwendung gestoßen. Hier der SQL Script um Hersteller anzuzeigen die keine Artikel haben.

SELECT h.cName, h.kHersteller FROM dbo.tHersteller h WHERE NOT EXISTS ( SELECT 1 FROM dbo.tArtikel a WHERE h.kHersteller = a.kHersteller )


Grüße, Andreas
 
  • Gefällt mir
Reaktionen: frankell

golvreven

Gut bekanntes Mitglied
1. Oktober 2020
289
22
Hallo atzlich,

ich erhalte folgende Fehlermeldung: #1142 - SELECT Befehl nicht erlaubt für Benutzer 'XXXXXXXX__pFMcOBHmLNiu2kwdIfoVr9r3mxk0soXK'@'localhost' auf Tabelle `dbo`.`tHersteller`

Viele Grüße
g.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
713
180
Moin,
die Fehlermeldung #1142 stammt von MySQL/MariaDB.

Die oben genannte Abfrage ist allerdings für den Microsoft SQL Server der JTL-Wawi gedacht.
Ich vermute, du versuchst die Abfrage über phpMyAdmin auszuführen?

Du musst dich stattdessen mit der Datenbank deiner JTL-Wawi verbinden, beispielsweise über das SQL Server Management Studio (SSMS), und dort die Abfrage ausführen.
 

golvreven

Gut bekanntes Mitglied
1. Oktober 2020
289
22
Moin,
die Fehlermeldung #1142 stammt von MySQL/MariaDB.

Die oben genannte Abfrage ist allerdings für den Microsoft SQL Server der JTL-Wawi gedacht.
Ich vermute, du versuchst die Abfrage über phpMyAdmin auszuführen?

Du musst dich stattdessen mit der Datenbank deiner JTL-Wawi verbinden, beispielsweise über das SQL Server Management Studio (SSMS), und dort die Abfrage ausführen.
Hallo Morimus,

das ist richtig. Ich wusste nicht, dass es SSMS gibt. Darauf habe ich auch keinen Zugriff.

Was kann passieren, wenn man die ungenutzten Hersteller in der Tabelle tHersteller löscht?

Viele Grüße
g.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
713
180
Was kann passieren, wenn man die ungenutzten Hersteller in der Tabelle tHersteller löscht?
Ich würde dringend davon abraten, die ursprüngliche SELECT-Abfrage einfach in ein DELETE umzuwandeln.
Nur weil ein Hersteller keinem Artikel mehr zugeordnet ist, bedeutet das nicht automatisch, dass keine weiteren Verknüpfungen in der Datenbank existieren.

Wenn du erst einmal nur ermitteln möchtest, welche Hersteller keine Artikel haben, kannst du die folgende Abfrage direkt innerhalb der Wawi als Eigene Übersicht ausführen:
Code:
SELECT
    h.cName AS Hersteller,
    h.kHersteller AS HerstellerID
FROM dbo.tHersteller h
WHERE NOT EXISTS (
    SELECT 1
    FROM dbo.tArtikel a
    WHERE a.kHersteller = h.kHersteller
)
ORDER BY h.cName;

Die Abfrage liest ausschließlich Daten aus und verändert nichts.
Das eigentliche Löschen würde ich anschließend regulär über die Wawi durchführen.
 

golvreven

Gut bekanntes Mitglied
1. Oktober 2020
289
22
Vielen Dank!

Leider stellt sich die Frage nur deshalb, weil das reguläre Löschen über die Wawi nicht funktioniert. Ich kann die Hersteller dort löschen, die Änderung aber nicht speichern. Es erscheint dann die Fehlermeldung: "Es liegen Fehler vor." - "Der Firmenname oder Nachname muss angegeben werden".
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
713
180
Ja, das dürfte vermutlich an einem oder mehreren anderen Herstellern liegen, bei denen die Pflichtfelder nicht befüllt sind.

Du kannst das mit der folgenden SQL-Abfrage überprüfen.
Sie zeigt dir die Hersteller, bei denen sowohl Firmenname als auch Nachname fehlen.

Code:
SELECT
    h.kHersteller AS HerstellerID,
    h.cName AS Hersteller,
    a.cCompanyName AS Firma,
    a.cLastName AS Nachname
FROM dbo.tHersteller h
LEFT JOIN Contact.tAddress a
    ON a.kContact = h.kContact
WHERE
    NULLIF(LTRIM(RTRIM(a.cCompanyName)), '') IS NULL
    AND
    NULLIF(LTRIM(RTRIM(a.cLastName)), '') IS NULL
ORDER BY h.cName;

Die betroffenen Hersteller müsstest du anschließend korrigieren.
Dann kannst du auch wieder speichern.
 

golvreven

Gut bekanntes Mitglied
1. Oktober 2020
289
22
Ok, aber dieser funktioniert wieder nicht in phpMyAdmin.

In der JTL-Wawi:
Die Felder Firmenname und Nachname kann man nicht einmal über die JTL-Ameise exportieren. Und die Fehlermeldung erscheint nicht, wenn ich eine Änderung an einem bestehenden Hersteller speichern möchte.
 

Morimus

Sehr aktives Mitglied
16. Mai 2019
713
180
phpMyAdmin hat an dieser Stelle auch nichts mit deinem Problem zu tun.

Die JTL-Wawi verwendet Microsoft SQL Server, kein MySQL.
Dafür könntest du beispielsweise das SQL Server Management Studio (SSMS) verwenden.

Du kannst die Abfrage aber auch direkt in der Wawi ausführen.

In der wawi F2 - unten „Eigene Übersichten“-> auf das Plus klicken -> dann den Code:
Code:
SELECT
    h.kHersteller AS HerstellerID,
    h.cName AS Hersteller,
    a.cCompanyName AS Firma,
    a.cLastName AS Nachname
FROM dbo.tHersteller h
LEFT JOIN Contact.tAddress a
    ON a.kContact = h.kContact
WHERE
    NULLIF(LTRIM(RTRIM(a.cCompanyName)), '') IS NULL
    AND
    NULLIF(LTRIM(RTRIM(a.cLastName)), '') IS NULL
ORDER BY h.cName;
 
  • Gefällt mir
Reaktionen: golvreven

golvreven

Gut bekanntes Mitglied
1. Oktober 2020
289
22
Das hat geklappt! Ich habe nun eine Tabelle mit exakt den zwei Herstellern, die ich löschen möchte. Und genau diese haben keinen Wert in "Firma" und "Nachname". Nur leider kann ich in der eigenen Übersicht nichts editieren.

Edit: Habe die Felder bei den Herstellern unter "Kontakt" gefunden. Nun konnte ich sie auch löschen.

Danke für Deine Hilfe!
 
Zuletzt bearbeitet:

Ähnliche Themen