Komme mit einer SQL Abfrage nicht klar - bitte um Hilfe :(

Templorials

Erfahrenes Mitglied
Hallo,

habe gerade eine Denkblockade und hoffe, dass mir hier jemand helfen kann.

Es geht einfach darum mit PHP folgendes zu realisiern..

Habe eine MySQL Tabelle:
ID | SPALTE1 | SPALTE2 | ZEIT
Einträge zum beispiel:
1 | 34 | 47 | 122343000(timestamp)
2 | 34 | 47 | 122343001
3 | 46 | 75 | 122343002
4 | 47 | 34 | 122343003
5 | 75 | 46 | 122343004

und die ist gefüllt mit 1000 zeilen..

Jetzt soll das Script alle Zeilen löschen bis auf die (zeitbezogen) letzten 10 Einträgen für jede Beziehung Spalte1<->Spalte2

Hoffe das is so halbwegs verständlich..
 
versteh ich nit^^

also wenn du alle zeilen, bis auf die löschen willst, wo ein bestimmtes timestamt ist, dann kannste das machen mit:

DELETE FROM *** WHERE ZEIT!="$dein_zeit_treffer"

also alles bis auf die wahrheit löschen.
 
HI,

ich denke, der Timestap ist nicht bekannt?

Ich würde es mit einer PHP Schleife,, die die Abfrage sequenziell ausfürht und schriebt, lösen.

Methodik:
- hole den aktuellen Timestamp
- erstelle ein Array der vorhandenen Einträge, absteigend sortiert nach dem Timestamp.
- dann jeden Eintrag mit dem Aktuellen vergleichen und bei Bedingungserfüllung eine Countervar inkrementieren.
- Dabei die ID der betreffenden Einträge in einen neuen Array speichern
- wenn Countervar gleich 10, neue Funktion aufrufen, die alle Einträge in einer Schleife löscht, deren ID != Array[schleifenvar] | oder man filter die 11. ID und sagt "ab dieser ID abwärts alles löschen.

Das Ganze kann man relativ einfach mit 2 kleinen PHP Funcs lösen.

Hoffe, ich hab das Thema nicht verfehlt.

Sonnige Grüße,

der Tom
 
Kannst du die affektierten Datensätze über ein Select herausfinden? Wenn ja:

SQL:
DELETE FROM
	`table`
WHERE
	`id` NOT IN (
		SELECT
			`id`
		FROM
			`table`
		WHERE
			1 /* relation | condition */
		LIMIT
			10
	)
;

Ansonsten anderweitig die IDs herausfinden, in PHP in ein simples Array bringen und
SQL:
DELETE FROM
	`table`
WHERE
	`id` NOT IN (
		/* implode(', ', $array) */
	)
;

Tom: Ist dann doch ein wenig sehr ineffizient, erstmal alles in PHP umzustrukturieren und dann einzeln zu löschen oder zu ändern ;)
 
1. Was war denn die Lösung? Interessiert micht.

2. Erledigt markieren?!

Gruß suf*****
 

Neue Beiträge

Zurück