|
You last visited: Today at 15:39
Advertisement
Mysql befehl
Discussion on Mysql befehl within the Metin2 Private Server forum part of the Metin2 category.
06/01/2013, 23:33
|
#16
|
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
|
Hi Leute!
Das Script von Coniesan ist recht performancelastig bei vielen Spielern. (Es geht für jeden Account, egal ob leer oder nicht, die ganze player-Tabelle durch und zählt dabei die Anzahl der Charaktere)
Ich würde empfehlen, die leeren Accounts direkt in einem Query zu finden:
Code:
SELECT account.id,account.login
FROM account.account
LEFT JOIN player.player_index ON player_index.id = account.id
WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Dieser Query zählt ausserdem nicht durch die ganze Charaktertabelle, sondern nutzt die player_index-Tabelle, was auch Ressourcen spart.
Coniesan kann das Script ja anpassen, wenn er Lust hat.  (ich hatte keine Lust dazu)
|
|
|
06/01/2013, 23:58
|
#17
|
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
|
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
|
|
|
06/02/2013, 00:05
|
#18
|
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
|
Quote:
Originally Posted by Coniesan
Kleiner Denkfehler beim Benutzen der player_index!
Wenn man keinen Char besitzt, existiert auch kein Eintrag in dieser Tabelle, wobei mir dennoch eine Idee kommt! Ich werde diese mal kurz durch gehn!
|
Keine Sorge, daran habe ich auch gedacht.
Wenn kein Eintrag mit dieser ID in der player_index gefunden wird, ist der Inhalt von beispielsweise der "player_index.id" Spalte NULL. Dieser Befehl, welchen du übrigens auch im Query findest, prüft ob diese Spalte NULL ist.
Code:
ISNULL(player_index.id)
|
|
|
06/02/2013, 00:12
|
#19
|
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
|
jojo  das hab ich dann soweit auch schon bearbeitet gehabt 
Also hier das bearbeitete Script, und nochmal danke für die SQL
PHP Code:
<?php // Temp. SQL connection $sqlCon = mysql_connect('127.0.0.1', 'root', 'pass'); //Auslesen der leeren Acc's $sql=mysql_query('SELECT account.id,account.login FROM account.account LEFT JOIN player.player_index ON player_index.id = account.id WHERE ISNULL(player_index.id) OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0);')or die(mysql_error());
// Normaler Seitenaufruf mit Leeren acc's abfrage if(empty($_POST)) { $count = 0; while($get = mysql_fetch_object($sql)) { $acc_id=$get->id; $acc_login=$get->login; echo $acc_id.' - '.$acc_login.'<br>'; $count = $count+1; } } // Seitenaufruf bei gesendetem delete Post if(!empty($_POST)) { $count = 0; if($_POST['delete']) { while($get = mysql_fetch_object($sql)) { $acc_id=$get->id; $acc_login=$get->login; mysql_query('DELETE FROM account.account WHERE id='.$acc_id.';')or die(mysql_error()); $count = $count+1; } } echo 'Es wurden <b>'.$count.'</b>-leere Accounts wurden gelöscht!<br><br>'; } // HTML User Delete Abfrage If(empty($_POST)) { if($count>0) { echo'--------------------------<br> Es sind <b>'.$count.'</b> leere Accounts vorhanden<br> Möchtest du alle diese Accounts löschen? <form action="#" method="POST" name="deleteform"><input type="submit" name="delete" value="JA!" /></form> '; } else echo 'Keine Accounts vorhanden!'; } ?>
|
|
|
06/02/2013, 00:19
|
#20
|
elite*gold: 0
Join Date: Jan 2011
Posts: 2,504
Received Thanks: 870
|
das script wird einmahlig benutzt alle 2-3 monate und nuhr dan ist es auch activ
also wird es auscomentiert wen es nicht gepraucht wird .
bei 13k+ accounts kanst lange suchen welche jetzt chars besitzen und welche nicht
mfg
|
|
|
06/02/2013, 00:23
|
#21
|
elite*gold: 0
Join Date: Apr 2013
Posts: 151
Received Thanks: 149
|
Quote:
Originally Posted by Coniesan
jojo  das hab ich dann soweit auch schon bearbeitet gehabt 
Also hier das bearbeitete Script, und nochmal danke für die SQL 
|
Code:
OR (player_index.pid1 = 0 AND player_index.pid2 = 0 AND player_index.pid3 = 0 AND player_index.pid4 = 0)
Warum hast du denn diesen Teil des Querys rausgenommen?
Wenn jemand einen Char erstellt und diesen wieder löscht, bleibt der player_index Eintrag, obwohl keine Chars mehr vorhanden sind, und dieser enthält dann bei jeder der pid Spalten eine 0, daher diese Überprüfung.
Ich bin nunmal perfektionist, haha.
|
|
|
06/02/2013, 00:23
|
#22
|
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,007
|
man könnte ja n Autoscript schreiben, welches jeden Tag guckt, ob und welcher Acc länger als 2 Monate (oder, wie mans halt gern hätte) nicht benutzt wurde, und die dort gelisteten automatisch löscht
#Edit: Ja sry, habs ausm Queryeditor Copy&Paste raus  da hab ich als Experiment den Part raus geschmissen gehabt
|
|
|
 |
|
Similar Threads
|
[S] Mysql Befehl!
04/14/2013 - Metin2 Private Server - 3 Replies
Hallo Community,
Ich möchte gerne meine 3 Tausend löschen aber das nicht per Hand sondern per befehl.
Wie so einer.
DELETE FROM item WHERE vnum = 72726
Aber dies für die Account Tabelle und für die Player Tabelle
Also ich weiß nur das man so anfängt.
''DELETE FROM''
Aber mehr weiß ich nicht.
|
MySQL Befehl?
11/25/2012 - Metin2 Private Server - 0 Replies
Hallu,
kennt jemand einen MySQL Befehl, den man für die Mob Proto anwenden kann?
Würde gerne einige Spalten dort updaten, sprich, erweitern, mit Nullen, weil ich alle diese Mobs, auch die auf Map2 etc., an Level 100 angleichen möchte und von Hand dauert das echt lange >.<
Kennt jemand nen Befehl dafür?
|
Suche Mysql befehl
07/23/2012 - Metin2 Private Server - 2 Replies
hallo com habe ein kleines problem und zwar sind autopots bei mir auf dem server
unters folk gelangt das es nicht solte also ein GM hatt die verteilt
so meine frage ist es gibt sicher einen mysql befehl der in der tabelle item
zb das item 72726 loescht also von allen playern das suchen dauert lange
danke im voraus
mfg
|
suche MySQL Befehl
10/28/2011 - Metin2 Private Server - 6 Replies
Guten Abend !!
Gibt es einen Befehl für die MySQL ,wo man die Accounts alle auf einmal auf BLOCK stellt ?
Habe in der SUFU nichts gefunden
|
mysql befehl
05/08/2010 - Metin2 Private Server - 4 Replies
hi,ich suche 3 mysql befehle für navicat in der query tabelle für die exp yang und item drop
und wo genau ich die eingeben muss iwo in der player is das egal? oder in der mobproto?
und ich kann iwie die npcs nimmer anklicken nur noch die shops woran liegt das? währe nett wenn mir jemand hilft
|
All times are GMT +1. The time now is 15:40.
|
|