Hirdetés
Új hozzászólás Aktív témák
-
bpx
őstag
válasz
Speeedfire
#1167
üzenetére
PHP-t erre felejtsd el, adatok ilyen szintű manipulációját az adatbázis végezze, ne a hozzá kapcsoló alkalmazás
ez 1, azaz egy darab színtiszta SQL utasítás:
DELETE FROM tabla WHERE id IN(
SELECT id FROM(
SELECT id, RANK() OVER (PARTITION BY uid ORDER BY time DESC) r FROM tabla)
WHERE r > 500);magyarázat:
a legbelső select partíciókat képez a táblából az uid alapján, és a partíciókat idő szerint (time) csökkenő sorrendbe rendezi, és minden egyes id-hoz rendel egy sorszámot (rank), hogy adott partícióban a rendezés szempontja szerint hanyadik helyen áll
az eggyel kintebb levő select lekérdezi azokat az id-kat, ahol ez a "rang" 500-nál nagyobb, tehát kívül esik a kívánt limiten
a delete meg törli az ilyen id-val rendelkező sorokat
szerk: adatbáziskezelőt mondjuk nem írtál, ez Oracle-ben működik, én a tábládból úgy tippelem hogy MS SQL (auto increment PK, meg int típus), de ezek a funckiók mintha ott is meglennének
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#1167
üzenetére
Hát én komplexebb feladatokra tárolt eljárást használok, mióta belekóstoltam.
De a te feladatodat igazából nem értem, hogy miért akarod tömbökbe szedni a userek id-ját... Adott userekhez tartozó bejegyzéseknél X időközönként csak Y mennyiséget akarsz törölni, tehát azt akarod, hogy valamennyi az adott júzerhez mindenképp megmaradjon?
Szóval nem csak törölni kell a táblából azt az Y sort, azt' kész?
Fejtsd ki, MOST!
===
(#1166) lakisoft :
"Tárolt eljárást is sokszor használok Dynamic SQL-lel együtt. Ott már nem látod hogy csúnya
."
Miért, a tárolt eljárás önmagában még nem ocsmány, de el lehet rondítani.
Új hozzászólás Aktív témák
- Apple iPhone 16 Pro - rutinvizsga
- exHWSW - Értünk mindenhez IS
- LEGO klub
- Hogyan verte le egy telefon chip az egész laptop ipart? – x86 vs ARM
- Tőzsde és gazdaság
- Samsung Galaxy A56 - megbízható középszerűség
- bambano: Bambanő háza tája
- Autós topik
- Mibe tegyem a megtakarításaimat?
- Milyen autót vegyek?
- További aktív témák...
- Bomba ár! HP EliteBook 840 G10 - i5-1335U I 16GB I 512SSD I 14,1" WUXGA I Cam I W11 I Gar!
- HP ProBook 650 G5 - i5 8265U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- REFURBISHED és ÚJ - Lenovo ThinkPad 40AS USB-C Dock Gen2 (akár 3x4K felbontás)
- 0perces DDR5 5600 vadiúj 2x16GB memória 1 év garancia
- AMD GAMER PC! Ryzen 5800X / RX 6900 XT / 32GB 3600MHz/ 1TB NVMe / 850w Gold! BeszámítOK
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

."