Hallo Wo könnte man sich das anziegen lassen OHNE jeden Kunden einzeln durchclicken zu müssen ? Im Admin finde ich dazu nix und in der Datenbank finde ich bei CUSTOMER keine Spalte dazu ob der schon mal ebstellt hatte oder nicht. Bitte nicht schreiben mit Export/Import über das Shopsystem -- das klappt zu 99,9% nie. Grüsse
Dominik Späte (werbe-markt.de) hat ein Modul bei dem Kundenkonten (die eine bestimmte Zeit nicht genutzt wurden) automatisch per Cronjob löscht. Das Modul war bisher kostenlos.
Einigermassen ja ... War auch in PHPmyAdmin drinnen was ja dasselbe ist.... Wie gesagt finde ich bei CUSTOMER keine Spalte wo man sehen könnte ob was bestellt wurde.
Ich denke nicht das das das Richtige ist..... Muss ich mal schauen im werbe-markt. Aber ich möchte ned Konten löschen die lange nimmer genutzt wurden sondern nur die Konten bei denen keine Bestellung da is.
War ja nur eine Idee Aber eigentlich musst du ja auch ein Zeitraum festlegen ab wann du konten ohne bestellungen löschen willst.
@heinzsoft-shop.de: So, wie Robert es schreibt, will er alle Kundenkonten löschen. @Robert Robl: Es sind einige Dinge bei der Löschung zu beachten, da es Tabellenabhängigkeiten anhand der customers_id gibt. Zum Beispiel stehen die Adressen in der Tabelle address_book und die Bestellungen in der Tabelle orders. Darüber hinaus musst Du für dich noch selbst entscheiden, welche Teilbereiche gleich mitgelöscht werden sollen, damit keine verweisten Daten entstehen. Das sind alle Abhängigkeiten zum Beispiel mit admin_access_users, address_book, customers*, whos_online, newsletter* oder andere Tabellen, die die customers_id enthält. Das bedeutet jetzt nicht, dass Du alle Datensätze einer Tabelle löscht, die die customers_id enthält. Es ist eigentlich egal, für was Du dich entscheidest. Du solltest nur wirklich wissen, was Du in der Datenbank machst und was weg kann oder nicht. DAHER: MACH BITTE VORHER EINE SICHERUNG, BEVOR DU AN DIE DATENBANK GEHST. Denn, wenn die Daten weg sind und kein Backup mehr von dir oder deinem Hoster vorhanden ist, dann sind sie weg. Ich zeige dir erstmal den SELECT-Befehl, wie Du dir diese Kunden anzeigen lassen kannst. Mit einem SELECT kannst Du nichts löschen, aber, wenn Du Dinge in phpMyAdmin machst von dem Du keine Ahnung hast, kann dann schon etwas passieren. Ich kann ja nicht sehen, wohin Du klickst. Hier der Befehl: Damit lokalisierst Du die Kunden inkl. deren Adressbucheinträgen, bei denen keine Bestellung vorliegt. Der Code ist ungetestet. Für Schäden an der Datenbank haftest Du. Code: SELECT c.*, ab.* FROM customers c LEFT JOIN orders o ON c.customers_id = o.customers_id LEFT JOIN address_book ab ON c.customers_id = ab.customers_id WHERE o.orders_id IS NULL;
Diesen Code habe ich im Forum gefunden - habe paar Konten gecheckt damit und da wäre keine Order dazu da select * from customers WHERE customers_id not IN (SELECT customers_id FROM orders GROUP BY customers_id)
Viele Wege führen nach Rom. Man kann auch mit einem SELECT in einem SELECT und mit einem WHERE NOT EXISTS arbeiten.
Beide Codes funktionieren ! Chwcke grad einige Konten aus der Liste und keine hat ne Bestellung aber Konto erstellt...
Etz muss ich nochmals fragen Die Abfragen gehen da via SQL im ShopAdmin und natürlich auch in der Datenbank. Wird alles korrelt angezeigt. Aber WIE lösche ich diese Konten dann ? Ich finde kein Feld wo ich nen Haken setzen könnte ?
Der SELECT-Befehl ist für die Anzeige gewesen. Zum Löschen der Datensätze kannst Du den DELETE-Befehl benutzen. Denk daran, dass nur die Tabellen customers und address_book bereinigt werden. Solltest Du noch andere Datensätze aus anderen Tabellen löschen wollen, muss mehr erweitert werden. Wenn Du jetzt mit meinen Queries die Datensätze löscht, weisst Du nicht mehr, welche Kunden Du gelöscht hast. Ich hoffe, Du verstehst, was ich damit sagen möchte!? Zwar gibt es noch die Möglichkeit diese anders rauszubekommen, aber, dass ist dann nur unnötige Arbeit. Prüfe mit meinem vorherigen SQL-Query, ob wirklich alles passt und denk vorallem an deine Sicherung! Stürz dich damit in dein Unglück: Also, theoretisch könnte man das mit einem Query machen. Ich möchte dich bitten, ohne jetzt technisch zu werden, es in 2 Schritten zu machen. Die Reihenfolge ist dabei sehr wichtig. 1. Erst löschen wir die Datensätze aus der Tabelle address_book: Code: DELETE ab FROM address_book ab INNER JOIN customers c ON ab.customers_id = c.customers_id LEFT JOIN orders o ON c.customers_id = o.customers_id WHERE o.orders_id IS NULL; 2. Danach kannst du die Datensätze aus der Tabelle customers löschen: Code: DELETE c FROM customers c LEFT JOIN orders o ON c.customers_id = o.customers_id WHERE o.orders_id IS NULL; Dann sollten die 2 Tabellen bereinigt sein.
Guten Morgen Ich denke wir sollten mal evtl telefonieren. Hätte es eben probiert aber im Moment keiner da. Diese Konten sollen komplett raus - im Admin kann man mehr anhaken ! Wenn ich manuell lösche dann hake ich immer ALLES AUSWÄHLEN an und lösche das Konto. Das is aber extrem mühselig und langwierig da es vieleviele tote Konten sind..... Evtl könnte man den Code erweitern ? Oder reicht es es die 2 Tabellen zu löschen wie due geschrieben hast ? Den Anhang 41286 betrachten Den Anhang 41287 betrachten Den Anhang 41286 betrachten Den Anhang 41287 betrachten
Ich komm schon zurecht bzw weiter. Der Code funktioniert mit Select und wird auch mit Delete klappen. Auch werde ich es in 2 Schritten dann machen wie Du geschrieben hattest. Aber du fragtest noch > Solltest Du noch andere Datensätze aus anderen Tabellen löschen wollen, muss mehr erweitert werden. Deswegen hatte ich die Screenshots gepostet was beim manuellen löschen gelöscht wird. Wenn es reicht das die Tabellen customers und address_book bereinigt werden ist das okay.
Bei meinen Queries werden nur Datensätze aus den Tabellen address_book und customers gelöscht. Hier musst du selbst entscheiden, was genau gelöscht werden soll, da es noch andere Tabellen mit Abhängigkeiten gibt, die die customers_id betreffen. Nicht umsonst kannst du im Backend beim Löschen diverse Bereiche entfernen. Wenn mehr Datensätze aus anderen Tabellen gelöscht werden sollen, müssen die Queries entsprechend erweitert oder anders aufgebaut werden. Werden sie nicht angepasst, bleiben sonst teilweise „Leichen im Keller“. Die Entscheidung, was im Keller bleiben soll oder nicht, kann ich dir nicht abnehmen. Du hast jedoch von mir eine Vorlage erhalten, wie du das Vorgehen angehen kannst.