films ouder dan 2 jaar

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John de Boer

John de Boer

24/07/2009 20:24:00
Quote Anchor link
Ik heb een (MySQL-)database met films...

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.)
 
PHP hulp

PHP hulp

26/04/2024 09:32:17
 
Matthias R

Matthias R

24/07/2009 20:40:00
Quote Anchor link
$year = date('Y');
$year = $year - 2

werkt dat niet??
Gewijzigd op 01/01/1970 01:00:00 door Matthias R
 
Roel -

Roel -

24/07/2009 21:46:00
Quote Anchor link
Lol, met INTERVAL.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= mysql_query("SELECT * FROM filmarchief WHERE jaar < NOW() - INTERVAL 2 YEAR");
?>


Dan gebruik je dus voor Jaar DATETIME.
 
Matthias R

Matthias R

24/07/2009 21:51:00
Quote Anchor link
roel,
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
 
John de Boer

John de Boer

24/07/2009 21:52:00
Quote Anchor link
Voer ik de volgende query uit op mijn db:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT *
FROM filmarchief
WHERE jaar < NOW() - INTERVAL 2 YEAR
ORDER BY jaar DESC;

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
 
Roel -

Roel -

24/07/2009 22:53:00
Quote Anchor link
Van dat laatste begrijp ik even niet veel, maar dit werkt gewoon op alle PHP versies, want dit is nl. MySQL werk :)
 
John de Boer

John de Boer

24/07/2009 22:56:00
Quote Anchor link
Als ik citeer uit de 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?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 
Matthias R

Matthias R

24/07/2009 23:00:00
Quote Anchor link
omgeveer zelfde systeem als imdb
 
John de Boer

John de Boer

24/07/2009 23:20:00
Quote Anchor link
Alleen MM heeft een makkelijker waardering-systeem dan IMDb, quote van de 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...?
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.