Ég er með töflu sem geymir prófíla (profiles) og töflu sem geymir pósta á spjallþráðum (discussion_posts).
Uppbygging taflanna (það sem skiptir máli):
-- -- Table structure for table `discussion_posts` -- CREATE TABLE IF NOT EXISTS `discussion_posts` ( `ID` int(11) NOT NULL auto_increment, `tID` int(11) NOT NULL default '0', `bID` int(11) NOT NULL default '0', `date` datetime NOT NULL default '0000-00-00 00:00:00', `uID` smallint(5) NOT NULL default '0', PRIMARY KEY (`ID`), KEY `uID` (`uID`) ) TYPE=MyISAM AUTO_INCREMENT=9127 ; -- -- Table structure for table `profiles` -- CREATE TABLE IF NOT EXISTS `profiles` ( `ID` int(11) NOT NULL auto_increment, `user` varchar(20) NOT NULL default '', `kt` varchar(10) NOT NULL default '', `name` varchar(50) NOT NULL default '', PRIMARY KEY (`ID`), KEY `nefnd` (`nefnd`), KEY `kt` (`kt`) ) TYPE=MyISAM AUTO_INCREMENT=259 ;
Fyrirspurnin sem ég er að gera (og á í smá ‘vandræðum’ með) á svo að sækja topp 3 lista yfir þá sem hafa flest innlegg síðasta mánuðinn.
Uppá einfeldnis sakir vil ég bara hafa þetta eina SQL fyrirspurn (sem þarf ekkert að vinna frekar með) og það sem ég á í mestum vandræðum með er skilyrðin sem segja ‘í þessum mánuði’.
Það sem ég er með er svona (og það virkar):
SELECT p.id AS `uid`, p.name AS `name`, COUNT(dp.id) AS `count` FROM `profiles` AS `p` LEFT JOIN `discussion_posts` AS `dp` ON dp.uid = p.id WHERE dp.bID = 1 AND [b]MONTH( dp.date ) BETWEEN MONTH( NOW() )-1 AND MONTH( NOW() ) AND YEAR( dp.date ) = YEAR( NOW() )[/b] GROUP BY p.id ORDER BY `count` DESC LIMIT 0,3
Er ekki einhver hérna sem er góður í að vinna með dagsetningar í SQL (því ég sökka í því)?
“If it isn't documented, it doesn't exist”