hallo mede tweakers,
ik heb een mysql database met een aantal tabellen
de relevante tabellen zijn:
dit is een onderdeel van een soort webshop. wat er nu gebeurt is dat wanneer een sessie verlopen is (op het moment dat de huidige timestamp > dan tmp_sessie.timestamp)
Als een bezoeker nu een bestelling in zijn bestellijst had staan en zijn sessie verloopt dan blijft zijn bestelling wel in de tabel tmp_bestellijst staan.
als hij dan een dag later opnieuw komt is zijn sessie verlopen en zal hij een nieuw sessie id krijgen waarna hij opnieuw een bestellijst kan maken. zijn oude sessie id is dan wel verwijderd maar zijn bestellijst staat nog in de database
wat ik dus nu wil is alle records verwijderen uit de tabel tmp_bestellijst als het veld tmp_bestellijst.sessie_id niet voor komt in de tabel tmp_sessie.sessie_id
ik ben al een tijdje aan het kloten geweest met queries maar ik kom er niet uit
kan iemand mij helpen?
edit:
de enige oplossing die ik kan bedenken is simpelweg voordat ik de verlopen sessies verwijder uit de database deze in een array zetten en allemaal stuk voor stuk verwijderen uit tmp_bestellijst maar dit is niet erg netjes en efficient...
ik heb een mysql database met een aantal tabellen
de relevante tabellen zijn:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| CREATE TABLE `tmp_bestellijst` ( `bestel_id` int(255) NOT NULL auto_increment, `persoon_id` int(255) NOT NULL default '0', `materiaal_id` int(255) NOT NULL default '0', `materiaal_aantal` int(255) NOT NULL default '0', `sessie_id` char(255) NOT NULL default '', PRIMARY KEY (`bestel_id`) ) TYPE=MyISAM; CREATE TABLE `tmp_sessie` ( `id` int(11) NOT NULL auto_increment, `sessie_id` char(255) NOT NULL default '', `timestamp` int(255) NOT NULL default '0', `ipnummer` char(15) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM; |
dit is een onderdeel van een soort webshop. wat er nu gebeurt is dat wanneer een sessie verlopen is (op het moment dat de huidige timestamp > dan tmp_sessie.timestamp)
PHP:
1
2
3
4
5
6
| include("database.php"); $curr_time = time(); //verwijderen van oude sessie id's $query2 = "DELETE FROM tmp_sessie WHERE timestamp < '$curr_time';"; mysql_query($query2, $connection); |
Als een bezoeker nu een bestelling in zijn bestellijst had staan en zijn sessie verloopt dan blijft zijn bestelling wel in de tabel tmp_bestellijst staan.
als hij dan een dag later opnieuw komt is zijn sessie verlopen en zal hij een nieuw sessie id krijgen waarna hij opnieuw een bestellijst kan maken. zijn oude sessie id is dan wel verwijderd maar zijn bestellijst staat nog in de database
wat ik dus nu wil is alle records verwijderen uit de tabel tmp_bestellijst als het veld tmp_bestellijst.sessie_id niet voor komt in de tabel tmp_sessie.sessie_id
ik ben al een tijdje aan het kloten geweest met queries maar ik kom er niet uit
kan iemand mij helpen?
edit:
de enige oplossing die ik kan bedenken is simpelweg voordat ik de verlopen sessies verwijder uit de database deze in een array zetten en allemaal stuk voor stuk verwijderen uit tmp_bestellijst maar dit is niet erg netjes en efficient...
[ Voor 11% gewijzigd door Verwijderd op 30-03-2004 17:02 ]