mit sql Anweisung con_frontendusers aufräumen

Gesperrt
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

mit sql Anweisung con_frontendusers aufräumen

Beitrag von stefkey » Mo 12. Okt 2015, 11:27

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.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von Oldperl » Mo 12. Okt 2015, 14:17

Servus,

recht gut erklärt :arrow: http://www.mysqltutorial.org/mysql-delete-join/

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von stefkey » Mo 12. Okt 2015, 22:48

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;

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von Faar » Di 13. Okt 2015, 09:16

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.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von Oldperl » Di 13. Okt 2015, 09:19

Hallo stefkey,

nimm mal die einfachen Anführungszeichen raus, wenn überhaupt sollten es Backticks sein :arrow: 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
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von stefkey » Di 13. Okt 2015, 10:46

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?

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von stefkey » Di 13. Okt 2015, 11:04

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 :wink:

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: mit sql Anweisung con_frontendusers aufräumen

Beitrag von rethus » Do 22. Okt 2015, 09:09

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.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Gesperrt