x ältesten Eintrag finden

Falsch verstanden, Es ist eine kombinierte Abfrage aus WHERE ISBN UND wenn mehr als 10 UND Timelimit. Sprich, ich erweitere nur yaslaws Gedanken.

PHP:
$timestamp=time()-(60*60*24*14);
//Heute minus 14 Tage
$query=
"DELETE *
FROM buch
WHERE (isbn, leihdatum) IN
    (SELECT isbn, leihdatum
    FROM    buch
    WHERE isbn='".$isbn."'
    AND leihdatum<'".$timestamp."'
    ORDER BY leihdatum DESC
    LIMIT 10, 999999999999999999999999)";
Sorry, so hingekritzelt, übernehme keine Verantwortung für Probleme und Fehler :D

mfg chmee
 
Da xrax den counter pro buch braucht, geht das nicht mehr mit limit.

Aber mit Variablen kann man selber ein counter bauen und auf diesen abfragen
Ich hoffe, das Ding mit den Variablen kennt auch MySQL 4.x

SQL:
DELETE *
FROM buch
WHERE (isbn, leihdatum) IN
	(SELECT isbn, leihdatum
	FROM
		(SELECT 
			@leih_num:= IF(@last_isbn=isbn, @leih_num+1, 1) AS leih_num,
			@last_isbn:=isbn AS isbn,
			leihdatum
		FROM
			(SELECT * FROM buch ORDER BY isbn, leihdatum) AS buch_sorted,
			(SELECT @leih_num:=1, @last_isbn:='') AS vars
		) AS numerierte_buecher		
	WHERE leih_num > 10)

- Bücher richtig sortieren (Unterabfrage buch_sorted)

- Die Variblen deklarieren (Unterabfrage vars)
@leih_num -> Pro ISBN die Durchnummerierung der Ausleihe.
@last_isbn -> isbn des letzten Datensatzens

- @leih_num:= IF(@last_isbn=isbn, @leih_num+1, 1) AS leih_num
wenn die aktuelle isbn gleich der letzten ist, @leih_num um eins erhöhen ansonsten auf 1 zurücksetzen. Die Variable als Feld leih_num ausgeben.

- @last_isbn:=isbn AS isbn,
die ISBN in die Variable @last_isbn schreiben und gleichzeitig als Feld isbn ausgeben.
Wichtig! Diese Felddefinition muss nach der leih_num sein, damit dort zuerst verglichen wird und erst dann hier die @last_isbn überschrieben wird
 
wow, krasses teil. Das es sowas in SQL gibt wusste ich gar nicht.
Ich werde es heute abend ausprobieren.

Besten Dank!

@chmee: ich möchte keine 7 Tage oder sonst eine Zeit angeben, sondern ebend ab dem 10. jüngsten löschen.
 
Naja nun, yaslaws Wissen in Ehren, er hat Dir helfen können. Interessant ist es aber, warum in einer query diese Aufgabe gestellt ist, das klingt nach 1x in der Woche verschlanken. Ansonsten hätte man doch bei einer bestimmten Abfrage (hier isbn) eine Löschquery bezüglich nur dieser isbn abschicken können (mit dem genannten Attribut "ab dem 11.Eintrag"). Nur mal so. Jedenfalls hat es yaslaw schicki mit Variablen gelöst.

mfg chmee
 

Neue Beiträge

Zurück