Tabelle aufräumen

Begonnen von Biker, 10 September 2003, 18:40:14

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Biker

Da ich mit phpmyadmin noch nicht besonders fit bin, stelle ich hier einfach mal meine Frage:

Ich möchte die Tabelle nuke_userguest von alten Einträgen befreien, d.h. im Laufe der Zeit sammeln sich hier Einträge von ehemaligen Mitgliedern an, die es gar nicht mehr gibt.

Was muss ich in phpmyadmin als Löschbefehl eingeben, um besagte Einträge zu löschen, ohne dass ich durch 3.579 Zeilen klicken muss, und jeden einzelnen Eintrag suchen muss.

Gibt es irgendwo im Netz eine Übersicht von solchen Befehlen?
Mit der Doku von phpmyadmin kann ich nix anfangen....bömische Dörfer! :exclam:

Danke vorab!

Gruß
Bernd

[Editiert am 10/9/2003 von Biker]
Detektei Martin - wir bringen Licht ins Dunkle!

Biker

Ist meine Frage so bescheuert?

Oder bin ich nicht der Einzige, der sich damit nicht auskennt???  ;)

Gruß
Bernd
Detektei Martin - wir bringen Licht ins Dunkle!

tequila

Du kannst im phpMyAdmin die Einträge nach den entsprechenden Spalten-Namen sortieren lassen, somit könntest Du sie auch nach der UserID sortieren lassen, dann hättest Du zumindestens alle UserGB-Einträge eines Users untereinander ... aber dann mußt Du kucken, wer denn nicht mehr da ist und welchen UserID daher inaktiv ist und die Guestbook-Dinger gelöscht werden können ... und dann darfst Du klicken und die weg löschen, die es nicht mehr gibt .... äääähm, viel zu umständlich, dafür ist der Admin nicht konstruiert worden.

Dann bau Dir lieben "ein kleines Script", das alles GB-Einträge durchgeht, kuckt, ob es noch einen User mit der UserID gibt in der user-tabelle (wenn ja, dann schön und GBEintrag bleibt da), wenn es User nicht mehr gibt oder der inaktiv ist (inaktiv erst seit dem vkpmx), dann lösche wech .... bei allem anderen wirst Du bestimmt blöde und löschst dann doch was, was da bleiben sollte, versprochen!

Das ist alles, was ich Dir mit auf den Weg geben kann als kleine Hilfe ;)

Biker

Ja, so hatte ich mir das auch gedacht,....also soweit war ich gedanklich trotz meiner blonden Haare auch schon....*grins*....aber trotzdem nett von Dir.
Jetzt muss ich nur noch zusehen, dass ich so ein Script zusammen geschustert bekomme!
Wenn ich es geschafft habe, so in 5 - 10 Jahren...(Spaß)...*lol*.....dann werde ich es hier als Download anbieten, denn ich denke, dass es einige Leutz gibt, die sowas brauchen.

Besser wäre natürlich, wenn in einem VKP mit Löschung eines Accounts auch die Userguestbook-Einträge von / an den jeweiligen User mitgelöscht würden!
Vielleicht ist das ja beim Pragma möglich???


Aber was meinst Du mit "User inaktiv"?
Hab ich da was übersehen???

Gruß
Bernd  ;)
Detektei Martin - wir bringen Licht ins Dunkle!

Andi

Hi Bernd :)

hat jetzt etwas länger gedauert. Nachfolgend 4 Datenbankqueries.

Die ersten Beiden reparieren die Datensätze, die angelegt wurden bis zum letzten Fix mit dem nicht angezeigten Törtchen im Onlineblock.

Die letzten Beiden machen einen Abgleich zwischen Usergästebuch und Usertabelle. Es werden alle Gästebucheinträge gelöscht, deren Sender oder Empfänger nicht mehr in der Usertabelle existieren.

UPDATE mx_userguest AS gb LEFT JOIN mx_users AS u ON gb.touser = u.uname SET gb.touserid = u.uid WHERE (((gb.touserid)=0));

UPDATE mx_userguest AS gb LEFT JOIN mx_users AS u ON gb.wer = u.uname SET gb.fromuserid = u.uid WHERE (((gb.fromuserid)=0));



UPDATE (mx_userguest AS gb LEFT JOIN mx_users AS u1 ON gb.touser = u1.uname) LEFT JOIN mx_users AS u2 ON gb.wer = u2.uname SET gb.touser = "xxdasistnurirgendeinstringxx"
WHERE (((u1.uname) Is Null)) OR (((u2.uname) Is Null));

DELETE FROM mx_userguest WHERE ( ( ( mx_userguest.touser ) =  "xxdasistnurirgendeinstringxx" ) );

Einfach nacheinander mit phpMyAdmin ausführen. Mache aber sicherheitshalber vorher eine Sicherungskopie der Tabelle.

PS:
Wenn ein User über das Adminmenü gelöscht wird, oder er sich selbst löscht werden die Gästebucheinträge mitgelöscht. Das ist schon drin im vkpMx.
schön´s Grüssle, Andi

Biker

Hi Andi,

danke erstmal....hab aber noch ne Frage, denn mein user-GB hat ja den präfix nuke und nicht mx.....muss ich also entsprechend ändern, richtig?!  ;)

Gruß
Bernd
Detektei Martin - wir bringen Licht ins Dunkle!

Andi

Ja klar, wollte es noch dazu schreiben....

also aus mx_ musste natürlich nuke_ machen ;)
schön´s Grüssle, Andi

Biker

Tja...funzt leider nicht.....

Fehler

SQL-Befehl :  
UPDATE nuke_userguest AS gb LEFT JOIN nuke_users AS u ON gb.touser = u.uname SET gb.touserid = u.uid WHERE (((gb.touserid)=0))

MySQL meldet:

You have an error in your SQL syntax near 'AS gb LEFT JOIN nuke_users AS u ON gb.touser = u.uname SET gb.touserid = u.uid W' at line 1

 :quest  :quest  :quest
Detektei Martin - wir bringen Licht ins Dunkle!

Andi

*entsetzt*

was'n das jetzt wieder....
Bei mir funzt das einwandfrei.... Kackdiewandan :mad:  

Funktioniert nur die eine Abfrage nicht oder auch die anderen nicht?
schön´s Grüssle, Andi

Biker

Hi Andi,
die 2. auch nicht:

Fehler

  SQL-Befehl :  
UPDATE nuke_userguest AS gb LEFT JOIN nuke_users AS u ON gb.wer = u.uname SET gb.fromuserid = u.uid WHERE (((gb.fromuserid)=0))

  MySQL meldet:
You have an error in your SQL syntax near 'AS gb LEFT JOIN nuke_users AS u ON gb.wer = u.uname SET gb.fromuserid = u.uid WH' at line 1


Gruß
Bernd  ;)

Detektei Martin - wir bringen Licht ins Dunkle!

hph

gute suche =)

aber ich habe ein anderes problem ...

wollte den befehl

UPDATE nuke_userguest AS gb LEFT  JOIN nuke_users AS u ON gb.touser = u.uname SET gb.touserid = u.uid WHERE ( ( ( gb.touserid ) = 0 ) )

ausführen ....

es kam folgende fehlermeldung:


Fehler

SQL-Befehl :  

UPDATE nuke_userguest AS gb LEFT JOIN nuke_users AS u ON gb.touser = u.uname SET gb.touserid = u.uid WHERE (

(
(
gb.touserid
) = 0
)
)

MySQL meldet:


Unknown column 'gb.touserid' in 'field list'


---
Ich habe von VKP 55 auf mx2 upgedatet !??! was nun ?


hph

klar, ist das prefix noch nuke ;)

jubilee

Hmmm ....
dein Datenbankprefix ist aber auch noch   nuke und nicht   mx ???

MfG
jubilee

jubilee

Hmmm ....
Frage an Andi :
Geht LEFT JOIN überhaupt mit UPDATE ???
Laut meiner MySQl-Dokumentation geht das LEFT JOIN nur mit SELECT (zumindest bei MySQL)
???
MfG
jubilee

jubilee

Nochmal geprüft.
Update über mehrere Tabellen geht erst ab MySql 4.x.x
MfG
jubilee

jubilee

@hph :
Existiert die Tabellenspalte
  DeinPrefix_userguest.touserid denn ?
Scheint jedenfalls nicht so ??
MfG
jubilee

hph

habe mysql 4.0.13 - geht trotzdem nicht ....

jubilee

@hph: Hast du meine Antwort bezüglich der Tabellenspalte
userguest.touserid nicht gelesen ???
Mit dieser Syntax :
 
ZitatUPDATE mx_userguest, mx_users SET mx_userguest.fromuserid = mx_users.uid WHERE ((mx_userguest.fromuserid)=0);
 
Muss es bei 4.x.x eigentlich gehen.
Aber dein Fehler ist eh ein anderer. Wenn es an der Syntax liegen würde, müsstest du eine Fehlermeldung wie der biker bekommen.MfG
jubilee

[Editiert am 24/10/2003 von SiteAdmin jubilee]

[Editiert am 24/10/2003 von SiteAdmin jubilee]

hph

nein existiert nicht, siehe auch:

http://www.pragmamx.org/modules.php?name=eBoard&file=viewthread&tid=7729



touserid ist nicht drin ...

gid, touser, text, wann, wer, email, url, dummy
das ist drin und sonst nix ....