Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Hersteller ohne Artikel löschen

    cooler

    • Mitglied
    • Beiträge: 190
    • Geschlecht:
    Hersteller ohne Artikel löschen
    am: 09. Januar 2016, 14:58:52
    Hallo, gibts ein Script das alle Hersteller automatisch löscht zu denen es keine Artikel mehr gibt?
    Oder ein SQL Befehl ?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=34153.0

    tuvalu

    • Neu im Forum
    • Beiträge: 28
    Re: Hersteller ohne Artikel löschen
    Antwort #1 am: 23. Februar 2016, 16:02:44
    Ich würde dieses Thema gerne noch einmal aufgreifen.

    Ich habe viele einzelne Produkte. Sind die verkauft bleibt oft ein Hersteller ohne Artikel zurück. Bei 11000 Artikel habe ich aber keinen Überblick darüber, ab gerade ein Hersteller ins Leere läuft.

    Ein Skript oder eine sql-Anweisung wäre da sehr hilfreich. Im Prinzip ist es ein "lösche manufactures-Eintrag wenn die manufacturers_id bei products mit products_quantity != 0 unter manufacturers_id nicht auftaucht".

    Zumindest bei mir ist dass dann so, dass wenn ich verkaufte Produkte wieder reinbekomme ich den Hersteller sowieso wieder mit importiere. Wie das bei Shops mit Bewertungen und und und ist, keine Ahnung.

    Vielleicht hat ja mal jemand Lust daraus eine SQL-Anweisung zu basteln.

    Danke
    Michael

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #2 am: 23. Februar 2016, 17:31:21
    Code: SQL  [Auswählen]
    DELETE FROM `manufacturers` WHERE NOT EXISTS ( SELECT * FROM `products` WHERE `manufacturers`.`manufacturers_id` = `products`.`manufacturers_id`);

    so oder ungefähr so sollte es aussehen :D

    und denn "lösche ..." habe ich nach 10 maligen durchlesen aufgegeben verstehen zu wollen tuvalu  :-?
    in welcher tabelle willst du welche Spalte oder welchen Eintrag löschen wenn der bestand nicht gleich 0 ist oder die Herstellerid leer ist (wie jetzt wo wer was?)

    tuvalu

    • Neu im Forum
    • Beiträge: 28
    Re: Hersteller ohne Artikel löschen
    Antwort #3 am: 23. Februar 2016, 17:47:15
    und denn "lösche ..." habe ich nach 10 maligen durchlesen aufgegeben verstehen zu wollen tuvalu  :-?
    in welcher tabelle willst du welche Spalte oder welchen Eintrag löschen wenn der bestand nicht gleich 0 ist oder die Herstellerid leer ist (wie jetzt wo wer was?)
    Ein Hersteller darf ja erst gelöscht werden, wenn er keine Produkte mehr hat. Die Produkte werden aber auch nicht einfach gelöscht nachdem sie verkauft wurden, sondern im Bestand auf 0 gesetzt. Deine SQL-Abfrage findet auch HerstellerIDs bei Produkten mit Bestand = 0, obwohl da vielleicht gar keinen anderen Produkte mehr sind und der Hersteller ins leere läuft. Also: Herstellereintrag löschen, wenn keine HerstellerID bei Produkten mit Bestand größer 0 gefunden werden konnte.

    So ist das gemeint. Sorry etwas unglücklich ausgedrückt.

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #4 am: 23. Februar 2016, 17:53:16
    Zitat
    Deine SQL-Abfrage findet auch HerstellerIDs bei Produkten mit Bestand = 0
    Meine Abfrage löscht nur Hersteller wenn es keinen Artikel mehr gibt welcher diesen Hersteller eingetragen hat.
    Und wenn ich dich jetzt richtig verstehe, willst du Hersteller löschen die bei Produkten eingetragen sind welche = 0 sind. <--- Richtig? Wenn das der Fall ist müsste man im gleichen zuge auch in der products table im entsprechenden Artikel die manufacturers_id auf NULL setzen um keine Inkonsistenz zu erzeugen.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #5 am: 23. Februar 2016, 17:58:08
    Da er die Hersteller wieder mit importiert sind für ihn diese Inkonsistenzen irrelevant.

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #6 am: 23. Februar 2016, 18:13:56
    also schön, ich hoffe er importiert die Hersteller wirklich inkl. ID und lässt diese nicht neu anlegen mit neuer ID.
    Dieser sollte die hersteller löschen welche in Artikeln deklariert sind mit Bestand 0:
    Code: SQL  [Auswählen]
    DELETE FROM `manufacturers` WHERE NOT EXISTS ( SELECT * FROM `products` WHERE `manufacturers`.`manufacturers_id` = `products`.`manufacturers_id` AND `products`.`products_quantity`>=1);

    tuvalu

    • Neu im Forum
    • Beiträge: 28
    Re: Hersteller ohne Artikel löschen
    Antwort #7 am: 23. Februar 2016, 18:48:09
    also schön, ich hoffe er importiert die Hersteller wirklich inkl. ID und lässt diese nicht neu anlegen mit neuer ID.

    Danke, sehr nett.
    Dein Einwand ist natürlich nicht uninteressant. Ich ging nämlich bisher davon aus, dass wenn ich bestehende Produkte (komplett mit allen Angaben) neu importiere, veränderte Daten überschrieben werden und die HerstellerID gegebenenfalls neu angelegt und richtig zugeordnet wird. Immerhin habe ich ja bereits Produkte mit geändertem Hersteller (falscher Hersteller oder falsch geschrieben) neu importiert und dabei wurden die Produkte geupdatet und der Hersteller neu angelegt und richtig zugeordnet, der alte Hersteller blieb als Dateileiche zurück und den habe ich händisch gelöscht.

    Insofern stören mich Produkte mit Bestand = 0 und ins Leere gehender ohne falsche HerstellerID nicht.

    Aber eine SQL-Anweisung zum kompletten Löschen solcher Produkte in allen relevanten Tabellen wäre natürlich auch nicht schlecht. Oder besser, im Backend ein Schalter der Dateileichen entsorgt, entsprechend der Bilderlöschfunktion. Aber ich wills nicht übertreiben.

    Dir jedenfalls mal Danke.
    Michael

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #8 am: 23. Februar 2016, 18:56:32
    Ich würde mal glatt behaupten das deine Anwendung von Artikeln welche keinen Bestand haben zu löschen keine allgemeine Anwendung ist und es sich so mit auch nicht lohnt eine Funktion dafür ein zu bauen.
    Ich bin generell der Meinung einen Artikel samt seinen dazugehörigen dingen zu löschen ist vom Standpunkt der Warenwirtschaft sowas von verboten wie im Allgemeinen einen Menschen zu ermorden.

    Um Inkonsistenz zu vermeiden nimm den ersten Befehl und setze vorher alle Artikel welche Bestand 0 haben die manufacturers_id auf NULL
    Deine Artikel mit Bestand 0 bleiben bestehen (setze diese dann noch auf Inaktiv dann hast du es perfekt) und die Hersteller fliegen raus

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #9 am: 23. Februar 2016, 19:01:03
    Code: SQL  [Auswählen]
    UPDATE `products` SET `manufacturers_id`=NULL,`products_status`=0 WHERE `products_quantity`<=0;
    DELETE FROM `manufacturers` WHERE NOT EXISTS ( SELECT * FROM `products` WHERE `manufacturers`.`manufacturers_id` = `products`.`manufacturers_id`);
     

    Edit: Abfrage geändert um auch negative Bestände zu erfassen.

    tuvalu

    • Neu im Forum
    • Beiträge: 28
    Re: Hersteller ohne Artikel löschen
    Antwort #10 am: 23. Februar 2016, 20:33:03
    Code: SQL  [Auswählen]
    UPDATE `products` SET `manufacturers_id`=NULL,`products_status`=0 WHERE `products_quantity`<=0;
    DELETE FROM `manufacturers` WHERE NOT EXISTS ( SELECT * FROM `products` WHERE `manufacturers`.`manufacturers_id` = `products`.`manufacturers_id`);
     

    Edit: Abfrage geändert um auch negative Bestände zu erfassen.

    Danke das ist toll von Dir. Hilft weiter.

    Den Shop sehe als bestückt mit einem V16 Motor, ich fahr den dann nur wie ein Gokart. Aber das macht den Shop ja aus, der kann beides und noch viel mehr.

    Danke
      Michael

    Neo-drexx

    • Frisch an Board
    • Beiträge: 93
    • Geschlecht:
    Re: Hersteller ohne Artikel löschen
    Antwort #11 am: 23. Februar 2016, 20:35:50
    Woher importierst du denn deine neuen Daten wenn du die Artikel wieder auf Lager hast? Ich habe das Gefühl du hast einen sehr umständlich komischen buchungsweg

    tuvalu

    • Neu im Forum
    • Beiträge: 28
    Re: Hersteller ohne Artikel löschen
    Antwort #12 am: 23. Februar 2016, 20:53:11
    Woher importierst du denn deine neuen Daten wenn du die Artikel wieder auf Lager hast? Ich habe das Gefühl du hast einen sehr umständlich komischen buchungsweg

    Ich habe mir vor 30 Jahren mal mit dBase 3 und später mit dBase 4 eine Eingabe und Ausgabe programmiert. Die habe ich um nützliche Progrämmchen für den xt:commerce Import und andere Plattformen ergänzt. Hier und da eine Routine und der Umgang mit dem Shop klappt ganz gut. Ab und an muß natürlich mal mit Hand aufgeräumt werden. Dafür kenne ich jede Programmzeile. PHP, MySQL aber geht mir völlig ab.

    Ciao
      Michael
    3 Antworten
    2453 Aufrufe
    05. März 2015, 13:00:38 von Bonsai
    14 Antworten
    2717 Aufrufe
    16. Februar 2021, 14:04:47 von hpzeller
    0 Antworten
    1606 Aufrufe
    05. September 2010, 18:18:07 von speedy
               
    anything