Ik wil in MSAccess graag een query die laat zien welke sites ik minimaal 7 dagen niet geupdate heb.

Mijn query:

SELECT tblSites.[Naam GPT], [MijnGPT-verdiensten].Geupdate
FROM tblSites INNER JOIN [MijnGPT-verdiensten] ON tblSites.pkSiteID = [MijnGPT-verdiensten].pkSiteID
WHERE [MijnGPT-verdiensten].Geupdate < DATE_SUB( DATE(), INTERVAL 7 DAY)


De relevante tabellen ('MySQL-stijl'):
CREATE TABLE `mijngpt` (
`pkGPTid` tinyint(11) unsigned NOT NULL auto_increment,
`naamGPT` tinyint(3) unsigned NOT NULL default '0',
`saldo` decimal(8,4) default NULL,
`punten` decimal(15,4) default NULL,
`referrals` tinyint(3) unsigned default NULL,
`uitbetaald` enum('0','1') default '0',
`aantaluitbetaald` tinyint(3) unsigned default NULL,
`uitbetaling` decimal(10,4) default NULL,
`refurl` varchar(255) default NULL,
`cijfer` tinyint(3) unsigned default NULL,
`promotie` enum('0','1') default '0',
`vakantie` enum('0','1') default '0',
`geupdate` datetime default NULL,
`opmerkingen` longtext,
PRIMARY KEY (`pkGPTid`)
) TYPE=MyISAM COMMENT='MijnGPT''s';

CREATE TABLE `tblsites` (
`pkSiteID` bigint(21) unsigned NOT NULL auto_increment,
`NaamGPT` varchar(255) NOT NULL default '',
`taal` varchar(50) default NULL,
`URL` varchar(255) default NULL,
`banner_1` varchar(255) default NULL,
`banner_2` varchar(255) default NULL,
`banner_3` varchar(255) default NULL,
`banner_4` varchar(255) default NULL,
`banner_5` varchar(255) default NULL,
`banner_6` varchar(255) default NULL,
`eigen` varchar(255) default NULL,
`aanmeldbonus` decimal(5,2) default NULL,
`uitbetaalgrens` varchar(25) default NULL,
`centpermail` decimal(3,1) default NULL,
`aantalmails` tinyint(3) unsigned default NULL,
`refcredit` varchar(25) default NULL,
`reflevels` tinyint(3) unsigned default NULL,
`bubble` varchar(15) default NULL,
`cijfer` tinyint(3) unsigned default NULL,
`waardering` varchar(10) default NULL,
`ervaring` longtext,
`bank` enum('0','1') default '0',
`paypal` enum('0','1') default '0',
`e_gold` enum('0','1') default '0',
`check` enum('0','1') default '0',
`fgh50` enum('0','1') default '0',
`fgh100` enum('0','1') default '0',
`SMS` enum('0','1') default '0',
`chat` enum('0','1') default '0',
`18plus` enum('0','1') default '0',
`scam` enum('0','1') default '0',
`afgekeurd` enum('0','1') default '0',
`webmaster` enum('0','1') default '0',
`systeem` varchar(10) default NULL,
`opmerkingen` longtext,
PRIMARY KEY (`pkSiteID`)
) TYPE=MyISAM COMMENT='GPT-sites';

Access heeft een iets andere interpretatie van sql.
Wie kan me een eindje op weg helpen?

EDIT:
de db is hier (of hier) te vinden
ik kan je niet helpen met mssql, maar ik kan je wel vertellen dat deze database niet geoptimaliseerd is, waarschijnlijk is deze al geimplementeerd in een applicatie, dus veranderen zal niet zo makkelijk meer gaan. Maar ik zou je als ik jou was zeker eens verdiepen in optimaliseren.
@Stefan
In welk opzicht is die niet genormaliseerd volgens jou?
(je moet niet teveel kijken naar de 'MySQL-stijl', ik heb het erbij gezet om een idee te krijgen. en bovendien heb ik het niet complete tabel-overzicht erin gezet.)
Datumintervallen in Access bereken je zo:

DateDiff ("d", date1, date2)

Het eerste argument geeft het interval aan (in dit geval dagen), het tweede en derde argument moeten van het type date of datetime zijn.
Dit is de query dan uiteindelijk geworden:

SELECT tblSites.[Naam GPT], tblSites.URL, [MijnGPT-verdiensten].Saldo, [MijnGPT-verdiensten].Punten, [MijnGPT-verdiensten].Geupdate, DateDiff("d",[MijnGPT-verdiensten].[Geupdate],Now()) AS Verschil
FROM tblSites INNER JOIN [MijnGPT-verdiensten] ON tblSites.pkSiteID = [MijnGPT-verdiensten].pkSiteID
WHERE (((DateDiff("d",[MijnGPT-verdiensten].[Geupdate],Now()))>=7))
ORDER BY DateDiff("d",[MijnGPT-verdiensten].[Geupdate],Now()) DESC , [MijnGPT-verdiensten].Geupdate DESC;

Reageren