films ouder dan 2 jaar
Het is de bedoeling dat ik een query krijg met alleen films die ouder dan 2 jaar zijn.
zo ziet mijn tabel filmarchief eruit:
CREATE TABLE `filmarchief` (
`pkFilmID` bigint(21) unsigned NOT NULL auto_increment,
`Titel` varchar(255) NOT NULL default '',
`Genre` varchar(100) default NULL,
`Land` varchar(75) default NULL,
`Jaar` year(4) default NULL,
`Waardering` varchar(20) default NULL,
`Leeftijd` varchar(10) default NULL,
`MIN` int(5) unsigned default NULL,
`Acteurs` varchar(255) default NULL,
`Regisseur` varchar(75) default NULL,
`Verhaal` varchar(100) default NULL,
`Muziek` varchar(75) default NULL,
`zwart_wit` enum('yes','no','0','1') default 'no',
`stereo` enum('yes','no','0','1') default 'no',
`dolby` enum('yes','no','0','1') default 'no',
`breedbeeld` enum('yes','no','0','1') default 'no',
`TVF` enum('yes','no','0','1') default 'no',
`Uitgezonden` date default NULL,
`Tijd` time default NULL,
`Eindtijd` time default NULL,
`Zender` varchar(25) default NULL,
`NL_TV` date default NULL,
`Aantal` int(3) unsigned default NULL,
`filmkompas` enum('yes','no','0','1') default 'no',
`TCM` enum('yes','no','0','1') default 'no',
`gegevens_nodig` enum('yes','no','0','1') default 'no',
`AKA` longtext,
`opmerkingen` varchar(255) default NULL,
`foto` longblob,
`IMDb_link` varchar(255) default NULL,
`IMDb_cijfer` decimal(3,1) default NULL,
`IMDb_votes` int(11) unsigned default NULL,
`FT_link` varchar(255) default NULL,
`FT_cijfer` decimal(3,1) default NULL,
`FT_votes` int(11) unsigned default NULL,
`MM_link` varchar(255) default NULL,
`MM_cijfer` decimal(5,2) default NULL,
`MM_votes` int(11) unsigned default NULL,
`RT_link` varchar(255) default NULL,
`AMG_link` varchar(255) default NULL,
`FA_votes` bigint(21) unsigned default NULL,
`FA_totaal` bigint(21) unsigned default NULL,
`FA_cijfer` decimal(3,1) default NULL,
`trailer` varchar(255) default NULL,
`showview` int(11) unsigned default NULL,
`oudFT_link` varchar(255) default NULL,
`oudFT_cijfer` decimal(3,1) default NULL,
`oudFT_votes` int(11) unsigned default NULL,
`samenvatting` longtext,
`oneliner` longtext,
`mening` longtext,
`beoordeling` longtext,
`minpluspunten` longtext,
PRIMARY KEY (`pkFilmID`),
FULLTEXT KEY `titelindex`(`Titel`)
) TYPE=MyISAM COMMENT='FilmArchief';
Ik heb al de volgende query:
SELECT *
FROM filmarchief
WHERE (MM_cijfer IS NOT NULL And MM_votes>=200)
ORDER BY MM_cijfer DESC, FT_cijfer DESC, IMDb_cijfer DESC, waardering DESC, MM_votes DESC, FT_votes DESC, IMDb_votes DESC, jaar DESC
LIMIT 0,250;
maar het is dus de bedoeling dat er alleen films in komen die minimaal 2 jaar oud zijn...
Ik weet alleen (nog) niet welke functie ik het beste kan gebruiken, DATEDIFF, DATE_ADD ???
Wie kan mij helpen?
of is deze vraag al reeds eens eerder gesteld? (graag dan ff een linkje o.i.d.)
Code (php)
1
2
3
2
3
<?php
$sql = mysql_query("SELECT * FROM filmarchief WHERE jaar < NOW() - INTERVAL 2 YEAR");
?>
$sql = mysql_query("SELECT * FROM filmarchief WHERE jaar < NOW() - INTERVAL 2 YEAR");
?>
Dan gebruik je dus voor Jaar DATETIME.
Zou mijn voorbeeld ook niet werken???
want
`Jaar` year(4) default NULL,
is dus eigenlijk gewoon een getal,
Gewijzigd op 01/01/1970 01:00:00 door Matthias R
dan krijg ik nog films uit 2008 en 2009, er zouden nog films in voor mogen komen van 2007, maar dus niet van 2008 en 2009. (het is immers 2009)
btw. werkt INTERVAL trouwens met alle php-versies? (tot nu toe)
@Matthias
Op zich zou het misschien kunnen werken, maar ik moet gegevens uit de db halen en die vergelijken met liefst een (SQL-)query.
@Roel
wat bedoel je met
Roel schreef op 24.07.2009 21:46:
?Dan gebruik je dus voor Jaar DATETIME.
ik moet in plaats van year(4) in de statement
`Jaar` year(4) default NULL,
`Jaar` datetime
gebruiken?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
Van dat laatste begrijp ik even niet veel, maar dit werkt gewoon op alle PHP versies, want dit is nl. MySQL werk :)
MovieMeter-site is het dan misschien duidelijker?
"De top 250: de films met de hoogste waardering op MovieMeter. Om voor deze lijst in aanmerking te komen moet een film minstens 200 stemmen ontvangen hebben. Films die in de afgelopen 2 jaar in de bioscoop zijn gaan draaien komen nog niet in aanmerking voor deze lijst."
is het nu duidelijk genoeg?
Als ik citeer uit de "De top 250: de films met de hoogste waardering op MovieMeter. Om voor deze lijst in aanmerking te komen moet een film minstens 200 stemmen ontvangen hebben. Films die in de afgelopen 2 jaar in de bioscoop zijn gaan draaien komen nog niet in aanmerking voor deze lijst."
is het nu duidelijk genoeg?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
omgeveer zelfde systeem als imdb
IMDb Top 250:
"The formula for calculating the Top Rated 250 Titles gives a true Bayesian estimate:
weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
where:
R = average for the movie (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250 (currently 1300)
C = the mean vote across the whole report (currently 6.8)"
Roel begreep iets niet, misschien nu wel...?
Alleen MM heeft een makkelijker waardering-systeem dan IMDb, quote van de "The formula for calculating the Top Rated 250 Titles gives a true Bayesian estimate:
weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C
where:
R = average for the movie (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250 (currently 1300)
C = the mean vote across the whole report (currently 6.8)"
Roel begreep iets niet, misschien nu wel...?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer