SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 19.11.2009, 21:15:56
Schlesie Schlesie ist offline
Anfänger
 
Registriert seit: Nov 2009
Alter: 47
Beiträge: 4
Delete über mehrere Tabellen

Hallo,

ich bin noch recht unbedarft was Mysql betrifft und hoffe hier Hilfe bei einem kleinen Problem zu finden.

Ich möchte Benutzer die länger als 100 Tage nicht mehr anwesend löschen. Die Daten sind dabei in 3 Tabellen gespeichert.

hlstats_PlayerUniqueIds
hlstats_Player
hlstats_PlayerNames

und mit "playerId" beknüpft.

Zunächst brauch ich ne Abfrage welche playerId länger als 100 Tage nicht da war.

Code:
SELECT `playerId` FROM hlstats_PlayerNames WHERE TO_DAYS( NOW( ) ) - TO_DAYS( lastuse ) >=100
Nun soll diese playerID aus 3 Tabellen gelöscht werden.

Code:
DELETE `playerId` FROM hlstats_PlayerUniqueIds;
DELETE `playerId` FROM hlstats_Player;
DELETE `playerId` FROM hlstats_PlayerNames;
Das es so nicht funktioniert ist mir klar, es soll nur verdeutlichen um was es geht.
Woran ich nun scheitere, wir bekomm ich es hin das die Daten aus allen 3 Tabellen gleichzeitig gelöscht werden. Der fragliche Syntax

Code:
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
oder
Code:
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
WHERE t1.id=t2.id AND t2.id=t3.id;
wirft bei mir nur Fragen auf. Speziell das
Code:
WHERE t1.id=t2.id AND t2.id=t3.id
Wie genau funktioniert das mit dem *.id bzw. wie müsste es in meinem Fall aussehen.

Gruss Schlesie
Mit Zitat antworten
  #2  
Alt 20.11.2009, 08:26:59
Benutzerbild von Indyk
Indyk Indyk ist offline
Member
 
Registriert seit: Aug 2006
Ort: Lübeck
Alter: 38
Beiträge: 900
Indyk eine Nachricht über ICQ schicken
AW: Delete über mehrere Tabellen

Hallo Schlesie,

eine frage voraus: benutzt du MyISAM oder InnoDB?
Mit Zitat antworten
  #3  
Alt 20.11.2009, 09:06:28
schrubba schrubba ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 110
AW: Delete über mehrere Tabellen

Moin,

da ich mich selbst vor einiger Zeit mal mit dem MySQL-Multi-Delete beschäftigt habe, hier mal ein ungetesteter Lösungsvorschlag, welcher zumindestens unter InnoDB laufen sollte.

Code:
DELETE hlP1, hlP2 , hlP3
FROM hlstats_PlayerUniqueIds AS hlP1
LEFT JOIN hlstats_Player AS hlP2 ON(hlP2.playerId = hlP1.playerId)
LEFT JOIN hlstats_PlayerNames AS hlP3 ON(hlP3.playerId = hlP1.playerId)
WHERE hlP1.playerId = <???>;

Gruß
schrubba
Mit Zitat antworten
  #4  
Alt 20.11.2009, 20:22:08
Schlesie Schlesie ist offline
Anfänger
 
Registriert seit: Nov 2009
Alter: 47
Beiträge: 4
AW: Delete über mehrere Tabellen

Zitat:
Zitat von Indyk Beitrag anzeigen
Hallo Schlesie,

eine frage voraus: benutzt du MyISAM oder InnoDB?
Bin mir grad nicht ganz sicher aber ich denke InnoDB
Mit Zitat antworten
  #5  
Alt 20.11.2009, 20:24:01
Schlesie Schlesie ist offline
Anfänger
 
Registriert seit: Nov 2009
Alter: 47
Beiträge: 4
AW: Delete über mehrere Tabellen

Zitat:
Zitat von schrubba Beitrag anzeigen
Moin,

da ich mich selbst vor einiger Zeit mal mit dem MySQL-Multi-Delete beschäftigt habe, hier mal ein ungetesteter Lösungsvorschlag, welcher zumindestens unter InnoDB laufen sollte.

Code:
DELETE hlP1, hlP2 , hlP3
FROM hlstats_PlayerUniqueIds AS hlP1
LEFT JOIN hlstats_Player AS hlP2 ON(hlP2.playerId = hlP1.playerId)
LEFT JOIN hlstats_PlayerNames AS hlP3 ON(hlP3.playerId = hlP1.playerId)
WHERE hlP1.playerId = <???>;

Gruß
schrubba
klingt für mich etwas verwirrend, wieso hlP1-hlP3 ?
Was muss dann bei <???> eingefügt werden?
Mit Zitat antworten
  #6  
Alt 20.11.2009, 22:38:29
schrubba schrubba ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 110
AW: Delete über mehrere Tabellen

hlP1-3 sind Aliase für Deine Tabellen, MySQL arbeitet intern immer mit Aliase, wenn man keine angibt, vergibt MySQL selbst welche. Bei diversen Joins ist die Angabe von Aliasen sogar zwingend notwendig, wie in Deinem Fall.

Ich hab die Aliase lediglich anhand Deiner Tabellen abgekürzt, damit man es evtl. erkennt.. ;)

hlstats_Player...

<???> die PlayerId des zu löschenden Users, ich dachte jetzt echt, daß sei selbsterklärend.. ;)


Es gibt verschiedene Statements für ein Multi-Delete, auf folgender Seite findest Du alle Infos.
http://dev.mysql.com/doc/refman/5.1/en/delete.html
Mit Zitat antworten
  #7  
Alt 21.11.2009, 01:00:01
Schlesie Schlesie ist offline
Anfänger
 
Registriert seit: Nov 2009
Alter: 47
Beiträge: 4
AW: Delete über mehrere Tabellen

Erstmal danke.
So grob hatte ich das mit den Aliasen verstanden, man muss nur sehr genau hingucken.
Ich glaub aber wir hatten da jetzt auch bisschen an einander vorbei geredet. Ich wollte es so machen das er mit einem Befehl sich die ID's selbst aus der hlstats_PlayerNames raussucht und diese dann aus den 3 Tabellen löscht.
Mit Zitat antworten
  #8  
Alt 21.11.2009, 11:27:28
schrubba schrubba ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 110
AW: Delete über mehrere Tabellen

Moin,

sollte auch kein Problem darstellen, dann musst Du halt nur die Bedingung entsprechend anpassen. Anhand der Verknüpfung der PlayerId löscht er dann in allen 3 Tabellen.

z.B.
...
"WHERE TO_DAYS( NOW( ) ) - TO_DAYS( hlP3.lastuse ) >=100"

Evtl. musst Du das Statement noch umschreiben, da ja das "lastuse" in der Tabelle "hlstats_PlayerNames" steht.


Gruß
schrubba
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Performance - Aufgabe (Abgleich mehrere Tabellen) mit PHP oder MySql lösen? ich01 PHP für Fortgeschrittene und Experten 2 06.07.2009 13:25:36
Delete über mehrere Tabellen gancom_de MySQLi/PDO/(MySQL) 0 01.08.2008 12:10:13
DELETE Problem Socrates MySQLi/PDO/(MySQL) 23 09.09.2007 18:36:57
2 Tabellen zusammenfassen. Problem! basti123456 MySQLi/PDO/(MySQL) 4 03.02.2006 08:01:08
delete in mehreren Tabellen wischinski MySQLi/PDO/(MySQL) 4 24.11.2004 13:36:21


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:46:02 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt