Seite 1 von 1
mit sql Anweisung con_frontendusers aufräumen
Verfasst: Mo 12. Okt 2015, 11:27
von stefkey
Hallo,
ich müsste in der Datenbank ein paar Zeilen aus der frondendusers löschen. Ganz einfach ist das nicht, denn man müsste in der Tabelle con_news_rcp den confirmed Wert prüfen und wenn dieser 0 ist dann den entsprechenden User in frondendusers löschen und gerade danach dann auch in con_news_rcp
Ich denke es muss etwas mit JOIN geamcht werden, oder? Kann mir da jemand helfen?
Code: Alles auswählen
Hier nochmals mein Problem:
Ziel: Alle nicht bestätigten Newsletter-Empfänger sollen nicht nur aus der con_news_rcp gelöscht sein sondern auch aus der Tabelle con_frontendusers
relevante Tabellen:
- con_news_rcp
- con_frontendusers
Identische Werte in beiden Tabellen sind:
die Zelle username in Tabelle con_frontendusers
die Zelle email in Tabelle con_news_rcp
Aufgabe:
Lösche alle Zeilen in beiden Tabellen wenn in Tabelle con_news_rcp in Feld "confirmed" eine 0 steht.
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Mo 12. Okt 2015, 14:17
von Oldperl
Servus,
recht gut erklärt
http://www.mysqltutorial.org/mysql-delete-join/
Gruß aus Franken
Ortwin
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Mo 12. Okt 2015, 22:48
von stefkey
Hallo Oldperl,
danke sehr für den Link. Ich dachte ich komme mit folgender SQl-Query hin. Aber irgendwas ist falsch. Es zeigt ein Syntax-Error. Ich finds bloß nicht.
Vielleicht kann mir jemand sagen ob ich überhaupt auf dem richtigen Weg bin mit der Anweisung.
Code: Alles auswählen
DELETE 'con_frontendusers2', 'con_news_rcp2'
FROM 'con_news_rcp2'
INNER JOIN 'frontendusers2'
ON 'frontendusers2.username' = 'con_news_rcp2.email'
WHERE 'con_news_rcp2.confirmed' = 0;
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Di 13. Okt 2015, 09:16
von Faar
Code: Alles auswählen
DELETE `con_frontendusers2`, `con_news_rcp2`
FROM `con_news_rcp2`
INNER JOIN `con_frontendusers2`
ON `con_frontendusers2.username` = `con_news_rcp2.email`
WHERE `con_news_rcp2.confirmed` = '0';
MySQL mag es nicht, wenn man ' mit ` verwechselt.
Hochkomma ' wird bei WHERE = 'chr' angewendet.
Akzentdingens ` wird bei Tabellen- und Zellen-Namen angewendet, kann aber auch ganz weg gelassen werden (manchmal meckert es das Fehlen aber an).
Ich habe "con_" zum Tabellennamen unten auch noch dazu geschrieben, weil oben con_frontneduser2 stand. Der Tabellenname muss schon stimmen.
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Di 13. Okt 2015, 09:19
von Oldperl
Hallo stefkey,
nimm mal die einfachen Anführungszeichen raus, wenn überhaupt sollten es Backticks sein
http://stackoverflow.com/questions/1132 ... -backticks
Es sollte so wie in dem einen Beispiel auf der Tutorial-Seite aussehen.
Code: Alles auswählen
DELETE offices, employees
FROM offices
INNER JOIN employees
ON employees.officeCode = employees.officeCode
WHERE offices.officeCode = 5
Gruß aus Franken
Ortwin
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Di 13. Okt 2015, 10:46
von stefkey
Danke sehr. Es hat nun geklappt mit:
Code: Alles auswählen
DELETE con_frontendusers2, con_news_rcp2
FROM con_news_rcp2
INNER JOIN con_frontendusers2
ON con_frontendusers2.username = con_news_rcp2.email
WHERE con_news_rcp2.confirmed = '0';
Ich dachte eigendlich ich hätte auch genau das gestern versucht. Aber gestern ging es nicht -> hatte wohl einen Fehler. Danke sehr!!!
Nun stellt sich die Frage ob ich prüfen kann ob alle email Adressen in der Tabelle con_news_rcp2 auch in der Tabelle con_frontendusers2 unter username zu finden sind.
Puh, das ist komplexer oder? Ich habe etwas mit NOT IN bzw NOT EXIST gefunden, kann man das Tabellenübergreifend nutzen?
Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Di 13. Okt 2015, 11:04
von stefkey
i habs
Code: Alles auswählen
SELECT *
FROM con_frontendusers2
WHERE NOT EXISTS (
SELECT *
FROM con_news_rcp2
WHERE con_frontendusers2.username = con_news_rcp2.email
)
Die Syntax stimmt und ausspucken tut es auch was. Obs wohl das richtige ist

Re: mit sql Anweisung con_frontendusers aufräumen
Verfasst: Do 22. Okt 2015, 09:09
von rethus
Wäre doch ne feine Sache, wenn der FE Bereich um eine "Reinigungs-Funktion" erweitert wird.... wenn Ihr jetzt eh gerade in der Thematik seid.
Ich halte das für eine Elementare Wartungs-Funktion für ein CMS.